gpt4 book ai didi

c# - 为什么 QueueClient.PeekBatch() 和 MessageReceiver.PeekBatch() 不拉回您指定的消息数量

转载 作者:太空狗 更新时间:2023-10-29 23:36:35 25 4
gpt4 key购买 nike

这两个:

queueClient.PeekBatch(Convert.ToInt32(60));

还有这个:

messageReceiver.PeekBatch(Convert.ToInt32(60));

不要“完全”工作。它们返回较小的数量,相反,我必须在循环中“泵送”这些方法,直到我知道我们使用的消息数量:

var count = queue.MessageCountDetails.ActiveMessageCount;

我缺少哪些设置,为什么 Azure 如此小气,不允许我撤回所有 60 条消息 - 我知道它们都在那里 - 一次?

最佳答案

根据 azure 样本,您传入的数字是上限,而不是完全匹配。因此,您只能依赖它返回或更少的消息数。

https://github.com/Azure-Samples/azure-servicebus-messaging-samples/tree/master/MessageBrowse#using-peekbatch

“我们传递给 PeekBatchAsync 的计数 20 是我们想要获取的消息数量的上限。该服务可以返回任意数量的消息,在本例中最多为 20 条,但至少会返回一条消息如果消息在最新读取序列号之后可用”

Azure 服务总线的批处理通常仅用作性能增强,以避免一次返回一条消息的开销。在内部可能已经发现返回更小但更多的批处理性能更高。使用精确数量进行批处理不是您的程序逻辑应该依赖的,我真正使用它只是为了提高应用程序性能,因为它允许比单个查看更高的吞吐量。

在一批中返回的数据量似乎也有限制,这可能适用于您。

“一次批量调用最多返回 256 kByte 的累积消息大小。”

关于c# - 为什么 QueueClient.PeekBatch() 和 MessageReceiver.PeekBatch() 不拉回您指定的消息数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43663054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com