如何使用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版本。

我发现我需要以下内容:

  1. Microsoft.Azure.WebJobs
  2. Microsoft.Azure.WebJobs.Core
  3. 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?的主要内容,如果未能解决你的问题,请参考以下文章

.Net Core中的通用主机——托管服务

如果在“等待”之后抛出,则从任务中抛出的异常被吞下

如何操作使用Tuxera NTFS for Mac

我如何在 for 循环外使用 for 循环范围变量形式?

如何使用for语句打印出1-100的偶数?

如何使用 for 循环创建 UIImageView 动态网格?