通过批处理在服务总线上接收大型消息的最佳做法



我正在使用ReceiveBatchAPI处理来自Azure Service Bus的消息(批处理(。在这方面,我注意到了以下内容。

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

例如

当 BatchSize = 50 时
  1. ,消息大小 = 20Kb 且预取计数 = 50 ===> 调用服务时接收的消息数总线客户端.接收批处理 =12 条消息

  2. 当 BatchSize = 50 时
  3. ,消息大小 = 10Kb 和预取计数 = 50 ===> 调用服务时接收的消息数总线客户端.接收批处理 =22 条消息

  4. 当 BatchSize = 50 时,消息大小 = 5Kb 且预取计数 = 50 ===> 调用服务时接收的消息数总线客户端.接收批处理 =44messages

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

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

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

若要确定消息的大小,请将实际消息内容添加到 Blob 存储,并将 Blob URL 作为消息正文发送。在这里,所有消息的大小将相同且非常小。

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

这也可以使用服务总线插件来实现。

最新更新