通过 Batch 在 ServiceBus 上接收大消息的最佳实践

Best practice for receiving large messages on ServiceBus though Batch

我正在使用 ReceiveBatch API 来处理来自 Azure 服务总线的消息(批处理)。在此我注意到以下内容。

当消息大小增加时,批量接收的消息数量会减少。

举例

  1. When BatchSize =50, MessageSize = 20Kb and Prefetch Count = 50 ===> 调用时收到的消息数 serviceBusClient.ReceiveBatch = 12 条消息

  2. When BatchSize =50, MessageSize = 10Kb and Prefetch Count = 50 ===> 调用时收到的消息数 serviceBusClient.ReceiveBatch = 22 条消息

  3. When BatchSize =50, MessageSize = 5Kb and Prefetch Count = 50 ===> 调用时收到的消息数 serviceBusClient.ReceiveBatch = 44条消息

在上述所有 3 种情况下,我一次可以收到大约 220 到 240 KB 的消息。 那么无论邮件大小如何,接收更多邮件的最佳做法是什么?在批处理中(serviceBusClient.ReceiveBatch)

可以批量处理的消息的最大大小为 256 KB。如果大小 ID 大于 256 KB,则批次将被拒绝。

无论单处理还是批处理,您都只能发送或接收256KB以内的消息。

为了确定消息的大小,将真正的消息内容添加到 blob 存储并将 blob URL 作为消息正文发送。在这里,所有消息的大小将相同且非常小。

因此,您可以确定每批处理的消息数。

这也可以使用 Service Bus Plugins 来实现。