我从 Microsoft文档中了解到,在第一次 Peek() 操作期间,任何一个可用的消息代理都会响应并发送其最旧的消息。然后在随后的 Peek() 操作中,我们可以遍历分区以查看每条具有增加序列号的消息。
我的问题是,在第一次 Peek() 操作期间,我将从任何第一个响应的分区中收到一条消息。是否可以保证我可以查看队列中的所有消息?
以更简单的方式,有三个分区:分区“A”有 10 条消息,序列号从 1 到 10。分区“B”有 10 条消息,序列号从 11 到 20。分区“C”有 10 条消息,序列号从 21 到 30 的数字。
现在,如果我执行 Peek() 操作,如果分区“B”首先响应,我将得到的第一条消息是序列号为 11 的消息。下一个 peek 操作将查找序列号递增的消息。我不会错过来自分区“A”的消息,它的序列号为 1-10,因为它总是搜索递增的序列号,所以窥视操作永远无法到达?
更新
QueueClient queueClient = messagingFactory.CreateQueueClient("QueueName", ReceiveMode.PeekLock);
BrokeredMessage message = null;
while (iteration < deadLetterMessageCount)
{
message = queueClient.Peek(); // According to docs, Peeks the oldest message from any responding broker, and next iterations peek the message with incremented sequence number
if (message == null) …Run Code Online (Sandbox Code Playgroud)