這是一個簡單的問題,但我無法找到答案。WCF + MSMQ 4:誰將消息從重試隊列移回應用程序隊列?
假設我的信息被放置在重試隊列(誰創造的重試隊列?它是一個WCF還是MSMQ服務?)
5分鐘後(這是我的重試延遲),該消息回來給應用程序隊列。
問題:在超時後誰將消息從重試隊列移動到應用程序隊列?
獎勵問題:如何跟蹤延遲?消息是否獲得「已移動」時間戳和「重試」時間戳?
這是一個簡單的問題,但我無法找到答案。WCF + MSMQ 4:誰將消息從重試隊列移回應用程序隊列?
假設我的信息被放置在重試隊列(誰創造的重試隊列?它是一個WCF還是MSMQ服務?)
5分鐘後(這是我的重試延遲),該消息回來給應用程序隊列。
問題:在超時後誰將消息從重試隊列移動到應用程序隊列?
獎勵問題:如何跟蹤延遲?消息是否獲得「已移動」時間戳和「重試」時間戳?
根據此文章Handling Poison Messages MSMQ 4提供了幾個新功能,允許應用程序使用子隊列處理有毒消息。這些功能包括:
所以看起來實際的移動是由WCF處理,而不是MSMQ;而MSMQ現在只需支持有毒消息和重試處理。
WCF與標準MSMQ綁定(netMsmqBinding和msmqIntegrationBinding)不支持重試。因此在回答您的問題時:
誰創建重試隊列? - 你這樣做。
誰在超時後將消息從重試隊列移至應用程序隊列? - 你這樣做。
延遲是如何被跟蹤的? - 你必須這樣做。
NServiceBus是開源的,可以使用MSMQ進行傳輸。該產品提供了重試功能,但不使用WCF。
UPDATE
以上有效期爲3 MSMQ及以下。
帶MSMQ 4.0的WCF確實提供了automatic retry and poison message handling,雖然休的答案對舊版本的MSMQ是正確的。從評論
編輯: 在識別郵件移動到重試隊列過程和背部,我認爲它的MSMQ服務本身,因爲這是在MSMQ 4.0中的新功能。 WCF參與包含所有這些活動的事務,當然,由MSMQ處理消息放置在隊列中。
感謝你的 - 我不知道這個新功能。 –
我的客戶已經在高容量的電子商務環境中使用它一年多了,而且它的實力非常強大。保存他們的餅乾一兩次:) –
我見過那篇文章,但我不清楚,雖然關於「消息被轉移到重試隊列」 - 誰這樣做?因爲重試參數是在WCF綁定中定義的,所以感覺像WCF(即Web服務)負責這一點,但同時重試是MSMQ 4的一個特性。這就是我迷惑的地方。 –
+1,但我的意思是問大約4.0(更新我的問題) –