有没有办法从Azure的服务总线队列中删除挂起的消息?



我目前正在使用. scheduledenqueuetime对要在未来日期运行的消息进行排队。有时,消息所传递的有关数据的事件发生变化或被删除,当发生这种情况时,我需要删除消息。当我搜索时,我不知道如何找到它或与它交互,有人能给我指出正确的方向吗?

您是对的,Natahan,目前没有办法从服务总线队列中取消(删除)预定的消息。我们已经让其他客户遇到了这种情况,并将在未来的里程碑中添加此功能。与此同时,我看到人们在会话状态下使用跟踪特定工作项进度的模式,当计划消息显示时,他们检查会话状态,如果它已经完成/解决了,那么就忽略该消息(然后可能将会话状态清空)。

ASB允许调度消息并根据需要取消消息,甚至在消息变为可见/可用之前。在这里找到完整的博客

另一种解决方案可能是使用"Microsoft.ServiceBus.Messaging"并按排队时间清除消息。接收消息,通过ScheduledEnqueueTime进行过滤,并在消息在特定时间排队时执行清除。

Microsoft.ServiceBus.Messaging;
MessagingFactory messagingFactory = MessagingFactory.CreateFromConnectionString(connectionString);
var queueClient = messagingFactory.CreateQueueClient(resourceName, ReceiveMode.PeekLock);
var client = messagingFactory.CreateMessageReceiver(resourceName, ReceiveMode.PeekLock);
BrokeredMessage message = client.Receive();
if (message.EnqueuedTimeUtc < MessageEnqueuedDateTime)
{
     message.Complete(); 
}

最新更新