0
使用隊列客戶端創建輔助角色時的模板代碼提供了消息泵實現。代碼中有一條評論:在azure QueueClient上調用close()是否優雅地停止消息泵?
// Initiates the message pump and callback is invoked for each message that is received, calling close on the client will stop the pump.
sourceClient.OnMessage(received =>
{
//blah blah implementation
});
當你在sourceClient上調用close()時會發生什麼?目前正在處理的消息是否繼續?即這是消息泵的正常關閉嗎?或者將調用關閉影響消息泵當前正在處理的消息?
的文件將導致我相信它是,但有這將意味着有一個消息泵沒有正常關機機制這個優秀的反饋資料:https://feedback.azure.com/forums/216926-service-bus/suggestions/4345733-provide-gracefull-shutdown-feature-to-message-pump
那麼,是什麼souceClient.close()實際上做?
因此,它們會在超時後重新出現在消息隊列中?他們不會迷路? – andrea
消息永遠不會丟失。他們會被重試,除非超過最大交付次數,然後郵件將被移至死信隊列。 –
好的謝謝。因此,正常關機的真正問題是消息被多次處理,或部分處理,然後再次處理,而不是丟失。 – andrea