Azure Functions:如何使用绑定有效地将一批消息发送到服务总线?
Azure Functions: how to efficiently send batch of messages to Service Bus using bindings?
我正在使用 Azure Functions 2.0 并尝试将一组消息发送到 Azure 服务总线主题。目前我正在使用 IAsyncCollector<T>
作为输出绑定:
[FunctionName("MyFunction")]
public static async Task MyFunction([ServiceBus(MyTopicName, EntityType.Topic, Connection = ServiceBusConnection) outTopic])
{
var messages = await GetMessages();
foreach(var message in messages)
{
await outTopic.AddAsync(message);
}
}
这种方法非常方便(声明式代码,没有样板)但带来了一个重要问题:对于大量消息,性能是不可接受的。是否有任何其他推荐的方法来处理需要发送到 Azure 服务总线的大批量?
似乎在将 IAsyncCollector 与 ServiceBus(和其他服务)一起使用时存在一个已知问题。
https://github.com/Azure/azure-webjobs-sdk/issues/921
查看重新订购的第一反应和这个:
This is easy when if we only send a small number of rows via
IAsyncCollector because we could just buffer in -memory and force an
ordering. But it’s prohibitive if we send huge payloads.
我正在使用 Azure Functions 2.0 并尝试将一组消息发送到 Azure 服务总线主题。目前我正在使用 IAsyncCollector<T>
作为输出绑定:
[FunctionName("MyFunction")]
public static async Task MyFunction([ServiceBus(MyTopicName, EntityType.Topic, Connection = ServiceBusConnection) outTopic])
{
var messages = await GetMessages();
foreach(var message in messages)
{
await outTopic.AddAsync(message);
}
}
这种方法非常方便(声明式代码,没有样板)但带来了一个重要问题:对于大量消息,性能是不可接受的。是否有任何其他推荐的方法来处理需要发送到 Azure 服务总线的大批量?
似乎在将 IAsyncCollector 与 ServiceBus(和其他服务)一起使用时存在一个已知问题。
https://github.com/Azure/azure-webjobs-sdk/issues/921
查看重新订购的第一反应和这个:
This is easy when if we only send a small number of rows via IAsyncCollector because we could just buffer in -memory and force an ordering. But it’s prohibitive if we send huge payloads.