如何创建服务总线触发webjob?

时间:2019-10-31 16:37:39

标签: azureservicebus azure-webjobs

我检查doc,使用下面的代码将webjob配置为创建服务总线触发功能。

    static void Main()
{
    var builder = new HostBuilder();
    builder.ConfigureWebJobs(b =>
    {
        b.AddAzureStorageCoreServices();
        b.AddServiceBus(sbOptions =>
        {
            sbOptions.MessageHandlerOptions.AutoComplete = true;
            sbOptions.MessageHandlerOptions.MaxConcurrentCalls = 16;
        });
    });
    var host = builder.Build();
    using (host)
    {

        host.Run();
    }
}

但是,当我尝试实现该方法时,AddServiceBus方法不可用,即使添加了服务总线触发功能,它也总是报告未找到作业功能错误。

那么配置错误在哪里,谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

根据我的经验,当您创建webjob时,您没有使用正确的软件包。如果选中service bus binding doc,则会发现它需要Microsoft.Azure.WebJobs.Extensions.ServiceBus来提供服务总线绑定。

在我的测试下,您需要以下软件包:

  1. Microsoft.Azure.WebJobs(> = 3.0.10)
  2. Microsoft.Azure.WebJobs.Extensions
  3. Microsoft.Azure.WebJobs.Extensions.ServiceBus
  4. Microsoft.Azure.WebJobs.ServiceBus

使用Microsoft.Azure.WebJobs.Extensions.ServiceBus,您将能够使用b.AddServiceBus()方法和Microsoft.Azure.WebJobs.ServiceBus来创建ServiceBusTrigger函数。

以下是我的测试代码,请尝试一下。

public static void Main(string[] args)
    {
        var builder = new HostBuilder();
        builder.ConfigureWebJobs(b =>
        {
            b.AddAzureStorageCoreServices();
            b.AddServiceBus();
        });
        builder.ConfigureLogging((context, b) =>
        {
            b.AddConsole();
        });
        var host = builder.Build();
        using (host)
        {
            host.Run();
        }
    }

Function.cs

public static void processservicebus(
    [ServiceBusTrigger("test", Connection = "ServiceBusConnection")]string myQueueItem,
    ILogger log)
    {
        log.LogInformation(myQueueItem);
    }

enter image description here

希望这可以为您提供帮助,如果仍然有其他问题,请随时告诉我。