Microsoft.Azure.ServiceBus .net standard - 如何批量接收

Microsoft.Azure.ServiceBus .net standard - How To Batch Receive

我希望将一些使用 Microsoft.ServiceBus 的作品迁移到 Microsoft.Azure.ServiceBus。这样我们就可以以 .net 标准为目标。

前面的代码使用 ReceiveBatchAsync 以便在一次调用中检索多条消息。

在新的命名空间中,我看不到这样做的方法。

设计中是否有一些新的东西使它变得多余,或者 1.0.0 发布版本只完成了部分?

最佳实践指南似乎参考了 Microsoft.ServiceBus 版本。

批处理方法现在也只调用 ReceiveAsync,使用带有 maxMessageCount 参数的重载。

/// <summary>
/// Receives a maximum of <paramref name="maxMessageCount"/> messages from 
/// the entity defined by IReceiverClient.Path using ReceiveMode mode.
/// </summary>
/// <param name="maxMessageCount">The maximum number of messages that will 
/// be received.</param>
/// <returns>List of messages received. Returns null if no message is found.</returns>    
Task<IList<Message>> ReceiveAsync(int maxMessageCount);

Microsoft.Azure.ServiceBus 2.0 版不支持批量接收消息。唯一的方法是使用消息泵,在 Microsoft.ServiceBus.Messaging 中被称为 OnMessage,在 .Net Standard nuget 包中被称为 RegisterMessageHandler .

Sean Feldman 在这里对这两个客户进行了很好的比较:

Microsoft.Azure.ServiceBus 仍在开发中,截至目前(2018 年 3 月),它仍然缺乏实体创建支持,因此您无法创建或更新主题订阅。