Azure 服务总线触发器未同时处理基于会话的队列

Azure Service Bus Trigger is not processing session based queue concurrently

我有一个在启用会话的队列上触发的 Azure 函数,定义如下

[ServiceBusTrigger("QueueName", Connection = "ServicebusConnectionString",
   IsSessionsEnabled = true)] string queueItem)

我的问题是函数一次只处理一条消息。因此,完成会话所需的时间比必要的要长得多。如何使函数并发处理消息?

我目前依靠默认值来配置触发器,我没有在 host.json.

中明确设置任何内容

我正在使用最新版本的 Azure Functions,带有隔离模型:https://github.com/Azure/azure-functions-dotnet-worker

My issue is that the function is only processing messages one at a time. Because of this, it takes a lot longer to finish a session than necessary. How do I make the function process messages concurrently?

这是设计使然。服务总线会话只能由单个使用者处理以确保消息排序。如果您需要并发处理消息并且可以乱序处理,则可以使用非会话队列。

但是如果您希望加快处理速度,那么批处理可能会有所帮助。触发器将收到多条消息,而不仅仅是一条消息。

public static Task Run(
    [ServiceBusTrigger("topic", "subscription", IsBatched = true)] string[] messages,
    FunctionContext context)
{
   // your code
}

Isolated Worker SDK configuration 展示了如何配置最大值。

虽然我不确定您是否可以混合使用会话和批次。