8

我目前正在使用 .scheduledEnqueueTime 排队要在未来某个日期运行的消息。有时消息正在中继有关更改的数据或被删除的事件,当发生这种情况时,我需要删除消息。我在搜索时看不到如何找到它或与之交互,有人能指出我正确的方向吗?

4

2 回答 2

4

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

于 2013-05-17T19:46:05.583 回答
1

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(); 
}
于 2018-08-24T09:11:20.317 回答