缺少 .NET Core 2.0 和 Azure Web Jobs 3.0 的 Azure 服务总线触发器配置

Azure Service Bus trigger configuration for .NET Core 2.0 and Azure Web Jobs 3.0 is missing

我正在做一个项目,我想在 Web 作业中实现 Service Buss 触发器。我已按照此处的说明进行操作: https://docs.microsoft.com/en-us/azure/app-service/webjobs-sdk-get-started.

 public class Functions
    {
        public static void ProcessQueueMessage([QueueTrigger("queue")] string message, ILogger logger)
        {
            logger.LogInformation(message);
        }
    }

但是我想使用 ServiceBus 来代替存储队列 (QueueTrigger) Microsoft.Azure.WebJobs.ServiceBusTrigger。在文档中说明使用以下内容: https://docs.microsoft.com/en-us/azure/app-service/webjobs-sdk-how-to#service-bus-trigger-configuration-version-3x

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();
    }
}

但是,问题是 b.AddServiceBus 甚至不可用(我有最新的 Web Jobs 版本)。所以,当我 运行 项目时,我得到 "No job functions found" 错误。有什么想法或指示吗?

我试过了:

 public static void ProcessQueueMessage([Microsoft.Azure.WebJobs.ServiceBusTrigger("queue")] string message, ILogger logger)
        {
            logger.LogInformation(message);
        }

     public static void Run([ServiceBusTrigger("queue", AccessRights.Manage, Connection = "Endpoint=bla bla")]
string myQueueItem, Int32 deliveryCount, DateTime enqueuedTimeUtc, string messageId,ILogger log)
    {

    }

这是您需要的软件包。

  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();
        }
    }

Functions.cs

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