C# Azure功能:如何使用绑定高效地向服务总线发送一批消息?

C# Azure功能:如何使用绑定高效地向服务总线发送一批消息?,c#,azure,azure-functions,azureservicebus,azure-servicebus-topics,C#,Azure,Azure Functions,Azureservicebus,Azure Servicebus Topics,我正在使用Azure Functions 2.0,并尝试向Azure服务总线主题发送一组消息。目前我正在使用IAsyncCollector作为输出绑定: [FunctionName("MyFunction")] public static async Task MyFunction([ServiceBus(MyTopicName, EntityType.Topic, Connection = ServiceBusConnection) outTopic]) { var messages

我正在使用Azure Functions 2.0,并尝试向Azure服务总线主题发送一组消息。目前我正在使用
IAsyncCollector
作为输出绑定:

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

这种方法非常方便(声明性代码,没有boilterplate),但带来了一个重要问题:对于大量消息,性能是不可接受的。是否有其他建议的方法来处理需要发送到Azure Service Bus的大批处理?

将IAsyncCollector与ServiceBus(和其他服务)一起使用时,似乎存在已知问题

请参阅第一次响应重新排序和以下内容:

如果我们只通过发送少量行,这是很容易的 IAsyncCollector,因为我们可以在内存中缓冲并强制 订购。但如果我们发送大量有效载荷,这是禁止的


不确定您尝试了哪些优化,但这里有一些最佳实践;@MatthewEvans感谢您的回复,我知道这一点,但理想情况下,我希望使用Azure函数绑定成批发送消息