![](/img/trans.png)
[英]What happens when an Azure Scheduled WebJob throws an unhandled exception?
[英]What happens when you try to cancel a scheduled Azure service bus message that has already been enqueued?
我正在尝试为安排Azure服务总线队列或主题的消息的最佳方法,同时保持打开选项以立即发送消息而不是计划的消息。 如果我尝试在第一封邮件的预定时间或之后立即发送替换邮件,我想确保自己可以防止创建重复邮件。
如果消息已入队,如果我尝试使用CancelScheduledMessageAsync(对于QueueClient和TopicClient类)取消计划的消息,将会发生什么情况? 会抛出异常吗?
根据您的描述,我发现了一个博客(正在取消预定的消息 ),谈论着类似的问题。
在版本3.3.1之前, 需要取消计划的消息才能使其可见,这是不可能的 。 任何访问其值的尝试都将导致
InvalidOperationException
。 因此,将来计划的任何不再需要的消息都将“滞留”在代理上,直到以后。使用Microsoft Azure Service Bus > = 3.3.1
QueueClient
,可以使用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);
我登录到Azure门户并检查了“活动消息数”和“ 计划消息数” 。 我可以在预定消息变为活动状态之前取消预定消息,但是如果我在预定消息变为活动状态之后通过sequenceNumber
取消预定消息,那么我将按以下方式检索异常:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.