簡體   English   中英

當您嘗試取消已排隊的計划Azure服務總線消息時會發生什么?

[英]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 ,可以使用QueueClientTopicClient安排消息並稍后將其取消。

此外,我還通過以下代碼對它進行了測試:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM