这两个:
queueClient.PeekBatch(Convert.ToInt32(60));
而且:
messageReceiver.PeekBatch(Convert.ToInt32(60));
不要“完全”工作。它们返回的数量较少,而我必须循环“抽取”这些方法,直到我知道我们使用的消息数量为止:
var count = queue.MessageCountDetails.ActiveMessageCount;
我缺少什么设置,为什么Azure如此吝啬并且不允许我退回,所有60条消息 - 我知道那些 - 立刻?
答案 0 :(得分:2)
根据天蓝色样本,您传入的数字是上限,而不是完全匹配。因此,您只能依赖它返回 或更少的消息。
"我们传入PeekBatchAsync的20个数量是我们想要获得的消息数量的上限。该服务可以返回任意数量的消息,在这种情况下最多20个消息,但如果消息在最新的读取序列号之后可用,则将返回至少一条消息"
对天蓝色服务总线进行批处理通常仅用作性能增强,以避免一次返回一个消息的开销。它可能在内部 已经得出结论,返回更小但更多批次的性能更高。使用精确数量进行批处理不是程序逻辑应该依赖的, 我只是真的用它来提高应用程序的性能,因为它允许更多的吞吐量而不是个人偷看。
似乎也限制了一批中可能适用于您的数据量。
"在一次批量调用中,最多将返回256 kByte的累积邮件大小。"