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

How to create service bus trigger webjob?

我检查了 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方法不可用,即使添加服务总线触发函数它总是报告找不到工作函数错误。

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

根据我的经验,当您创建网络作业时,您没有使用正确的包。如果您检查 service bus binding doc,您会发现它需要 Microsoft.Azure.WebJobs.Extensions.ServiceBus 来提供服务总线绑定。

经过我的测试,你需要的包如下:

  1. Microsoft.Azure.WebJobs(>= 3.0.10)
  2. Microsoft.Azure.WebJobs.扩展
  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);
    }

希望这对您有所帮助,如果您还有其他问题,请随时告诉我。