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 展示了如何配置最大值。
虽然我不确定您是否可以混合使用会话和批次。
我有一个在启用会话的队列上触发的 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 展示了如何配置最大值。
虽然我不确定您是否可以混合使用会话和批次。