如何使用HostBuilder for WebJob?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用HostBuilder for WebJob?相关的知识,希望对你有一定的参考价值。
随着.Net 2.0引入了非常有用的控制台应用程序HostBuilder,就像我们使用WebHostBuilder for Web Application一样。
我现在关注的是如何使用带有QueueTrigger的WebJob实现HostBuilder?
到现在为止,我正在使用JobActivator:
var startup = new Startup();
var serviceProvider = startup.ConfigureServices(new ServiceCollection());
startup.Configure(serviceProvider);
var jobHostConfiguration = new JobHostConfiguration()
{
JobActivator = new JobActivator(serviceProvider),
};
var host = new JobHost(jobHostConfiguration);
host.RunAndBlock();
有关完整示例,请参阅以下代码:https://github.com/ranouf/DotNetCore-CosmosDbTrigger-WebJob/tree/master/CosmosDbTriggerWebJob.App
是否有人已经将HostBuilder用于带有QueueTrigger的WebJob?可能吗?
谢谢
就在那时,我已经想到了这一点。首先确保已升级软件包以使用相应WebJob软件包的最新v3版本。
我发现我需要以下内容:
- Microsoft.Azure.WebJobs
- Microsoft.Azure.WebJobs.Core
- Microsoft.Azure.WebJobs.Extensions.ServiceBus
然后,您可以在Main方法中使用构建器作为Console项目,如下所示:
static async Task Main()
{
var builder = new HostBuilder();
builder.ConfigureAppConfiguration(cb =>
{
cb.AddJsonFile("appsettings.json");
});
builder.ConfigureWebJobs(b =>
{
b.AddServiceBus();
});
await builder.RunConsoleAsync();
}
请注意,我已启用语言功能7.1以支持异步主方法。如果您愿意,可以使用“等待()”。然后我将appsettings.json文件添加到我的项目中,如下所示:
{
"ConnectionStrings": {
"AzureWebJobsServiceBus": "Endpoint=sb://..."
}
}
(编辑:并确保文件始终复制到输出文件夹)最后,最重要的是我修改了触发器功能以包含Connection的名称,如下所示:
public static void ProcessQueueMessage([ServiceBusTrigger("[Your Queue Name]", Connection = "AzureWebJobsServiceBus")] string message, TextWriter log)
{
log.WriteLine(message);
}
即使Connection的名称是默认名称,我仍然似乎必须在我的函数属性中定义它。我也尝试了“价值观”方法,但我无法做到这一点。然后我开始从服务总线接收消息。
以上是关于如何使用HostBuilder for WebJob?的主要内容,如果未能解决你的问题,请参考以下文章