【发布时间】:2021-04-03 12:21:12
【问题描述】:
来自 Azure 服务总线的消息浏览功能的 docs,它表示当我们尝试访问消息的锁定属性时,我们会得到 InvalidOperationException。因此我们无法访问锁定持续时间和令牌详细信息。当我们执行peek 时,是否至少有一种方法或解决方法可以让我们知道它是否已被锁定?
var client = MessagingFactory.CreateQueueClient("queueName");
BrokeredMessage message = client.Peek(); // Retrieves a locked message and its lock properties returns exception or old lock details depending upon its state
【问题讨论】:
-
问题是你为什么需要知道?偷看不接收。你想完成什么?
-
我正在尝试编写一个逻辑以使用序列号顺序从队列的开头删除。如果它是延迟消息,peek 可以帮助我获取要立即删除的序列号(通过在其过期/锁定时捕获异常)。如果它是一条活动消息,我可以接收和删除。例如:如果我应该只删除前 10 条消息,并且当我查看队列中的第一条消息时(考虑这是锁定消息并且前 10 条消息中没有更多活动消息),我假设有一个活动消息消息并在第 10 条消息以下的某处收到一条消息。
标签: c# azureservicebus azure-servicebus-queues