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

set*_*lio 2 azure azureservicebus azure-webjobssdk asp.net-core-2.0

我正在做一个项目,我想在 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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

但我想使用 ServiceBus 的 Microsoft.Azure.WebJobs.ServiceBusTrigger 而不是存储队列 (QueueTrigger)。在文档中声明使用以下内容: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();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,问题是 b.AddServiceBus 甚至不可用(我有最新的 Web 作业版本)。因此,当我运行该项目时,出现“未找到工作职能”错误。任何想法或指示?

我确实尝试过:

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

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

    }
Run Code Online (Sandbox Code Playgroud)

Geo*_*hen 5

这里有你需要的包。

  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();
        }
    }
Run Code Online (Sandbox Code Playgroud)

函数.cs

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

在此处输入图片说明