[英]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.