当您尝试取消已排入队列的预定Azure服务总线消息时会发生什么情况?
我正在尝试为Azure服务总线队列或主题安排消息的最佳方式,同时保留打开选项以立即发送消息而不是预定消息。如果我尝试在第一封邮件的预定时间或之后发送替换邮件,我想确保自己能够防止创建重复邮件。当您尝试取消已排入队列的预定Azure服务总线消息时会发生什么情况?
如果我在消息已经入队之后尝试使用CancelScheduledMessageAsync(对于QueueClient和TopicClient类)取消预定消息,会发生什么情况?它会抛出异常吗?
根据您的描述,我找到了一个博客(Canceling Scheduled Messages)谈论类似的问题。
3.3.1版本之前,需要计划的消息被成为可见之前取消了,这是不可能的。任何尝试访问其值的结果都将导致
InvalidOperationException
。因此,任何未来计划并且不再需要的消息都会被“卡住”在经纪人身上,直到晚些时候。使用Microsoft Azure Service Bus> = 3.3.1
QueueClient
或TopicClient
可用于安排消息并稍后取消消息。
而且,我已经通过下面的代码测试它在我身边:
BrokeredMessage brokerMsg= new BrokeredMessage("Hello World!!!");
long sequenceNumber = await queueClient.ScheduleMessageAsync(brokerMsg, DateTimeOffset.UtcNow.AddSeconds(30));
await Task.Delay(TimeSpan.FromMinutes(1));
// Cancel scheduled message
await queueClient.CancelScheduledMessageAsync(sequenceNumber);
我登录到蔚蓝的门户网站,并检查活动消息COUNT和调度消息COUNT。它变得活跃之前,我可以取消计划的消息,但如果我通过sequenceNumber
取消计划的消息调度消息被激活后,那么我将如下检索异常:
感谢您检查Bruce!因此,如果我理解正确,那么当您在队列中激活并尝试取消邮件时,您看到引发的异常吗? –
是的,我在队列消息被使用之前调用了取消操作。如果预定的信息已被激活,则无论该信息是否已被使用,都不能取消该信息。 –
当你尝试了什么事它? – mjwills
我将在下周尝试它。只是想知道有没有人知道,因为我没有找到有关它的文档。 –