我正在嘗試爲Azure服務總線隊列或主題安排消息的最佳方式,同時保留打開選項以立即發送消息而不是預定消息。如果我嘗試在第一封郵件的預定時間或之後發送替換郵件,我想確保自己能夠防止創建重複郵件。當您嘗試取消已排入隊列的預定Azure服務總線消息時會發生什麼情況?
如果我在消息已經入隊之後嘗試使用CancelScheduledMessageAsync(對於QueueClient和TopicClient類)取消預定消息,會發生什麼情況?它會拋出異常嗎?
我正在嘗試爲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
我將在下週嘗試它。只是想知道有沒有人知道,因爲我沒有找到有關它的文檔。 –