PeekLock 模式下的 Peek() 方法是否锁定服务总线消息?
Does Peek() method in PeekLock mode lock a Service bus message?
我知道我们可以在 PeekLock 模式下使用 Receive() 方法来锁定消息,对其进行处理,最后完成 ()。但是,Peek() 方法如何在 PeekLock 模式下工作?它是否锁定消息?
var client = messagingFactory.CreateQueueClient("entity", ReceiveMode.PeekLock);
BrokeredMessage = client.Peek();
另外,作为第二个问题,我知道我们可以重复调用 Peek() 来查看所有活动结束消息。但是,是否可以重复使用Peek()方法来Peek所有的死信消息?
But, how does Peek() method work on PeekLock mode? Does it lock the message?
不,Peek()
不锁定消息,无论模式如何。模式仅适用于 Receive()
。不仅 Peek()
甚至可以 return 被另一个接收者锁定的消息。
But, can Peek() method be used repeatedly to Peek all the dead lettered messages?
是的,死信消息驻留在另一个特殊队列中。您可以像普通队列一样从中 Peek()
。
同样为了提高吞吐量,您可以使用 PeekBatch
而不是 Peek
。
总之,Peek
是 API 消息 browsing/diagnostics 的目的。您可能想快速阅读 official documentation。
注意:对 non-partitioned 实体的查看操作始终是 return 最旧的消息,但不是对分区实体。相反,它 return 是消息代理最先响应的分区之一中最旧的消息。无法保证 returned 消息是所有分区中最旧的消息。
Peek
不锁定消息。事实上,Peek 甚至不知道有关锁的任何细节。文档是这样说的:
Peek also returns messages that were locked and are currently being processed by other receivers. However, because Peek returns a disconnected snapshot, the lock state of a message can't be observed on peeked messages.
您可以通过访问消息的锁 属性 来检查这一点,例如 LockedUntilUtc
。这将 return 你例外 InvalidOperationException
.
第二个问题的答案是“是”。您可以浏览活动消息和死信消息。
我知道我们可以在 PeekLock 模式下使用 Receive() 方法来锁定消息,对其进行处理,最后完成 ()。但是,Peek() 方法如何在 PeekLock 模式下工作?它是否锁定消息?
var client = messagingFactory.CreateQueueClient("entity", ReceiveMode.PeekLock);
BrokeredMessage = client.Peek();
另外,作为第二个问题,我知道我们可以重复调用 Peek() 来查看所有活动结束消息。但是,是否可以重复使用Peek()方法来Peek所有的死信消息?
But, how does Peek() method work on PeekLock mode? Does it lock the message?
不,Peek()
不锁定消息,无论模式如何。模式仅适用于 Receive()
。不仅 Peek()
甚至可以 return 被另一个接收者锁定的消息。
But, can Peek() method be used repeatedly to Peek all the dead lettered messages?
是的,死信消息驻留在另一个特殊队列中。您可以像普通队列一样从中 Peek()
。
同样为了提高吞吐量,您可以使用 PeekBatch
而不是 Peek
。
总之,Peek
是 API 消息 browsing/diagnostics 的目的。您可能想快速阅读 official documentation。
注意:对 non-partitioned 实体的查看操作始终是 return 最旧的消息,但不是对分区实体。相反,它 return 是消息代理最先响应的分区之一中最旧的消息。无法保证 returned 消息是所有分区中最旧的消息。
Peek
不锁定消息。事实上,Peek 甚至不知道有关锁的任何细节。文档是这样说的:
Peek also returns messages that were locked and are currently being processed by other receivers. However, because Peek returns a disconnected snapshot, the lock state of a message can't be observed on peeked messages.
您可以通过访问消息的锁 属性 来检查这一点,例如 LockedUntilUtc
。这将 return 你例外 InvalidOperationException
.
第二个问题的答案是“是”。您可以浏览活动消息和死信消息。