2015-10-14 150 views
2

前言:
我有一個web應用程序,它不時發送MSMQ消息(使用UseDeadLetterQueue = true)。我還可以看到其中一些消息被放入系​​統死信隊列中。但是,我無法直接從「計算機管理」控制檯查看失敗原因。
我發現下面的資源:
https://msdn.microsoft.com/en-us/library/ms789035(v=vs.110).aspx
允許檢查消息的狀態和故障。但它只能在WCF範圍內使用(因爲它使用OperationContext)。爲什麼消息放入死信隊列(MSMQ)?


基本上檢查消息狀態和故障的原因是什麼,我需要,但我怎麼可以配置一個WCF服務聽死信隊列和跟蹤放裏面,無論發送的所有郵件?

或者是否有任何其他(非WCF)的方式來獲得爲什麼特定消息被放入死信隊列的原因?

回答

0

您找到的鏈接文章告訴您如何創建一個將消息從DLQ中取出的WCF服務。請注意,它告訴您必須使用AddressFilterMode = AddressFilterMode.Any來關閉所有消息,而不管發件人。

注意:到消息在DLQ上結束時,您將不會獲得有關發生這種情況的原因的信息。無論您是否使用WCF,該信息未存儲在隊列中。

例如,如果您的收件人是使用MSMQ綁定的WCF偵聽器,則拋出的任何異常都將導致郵件無法傳遞。 MSMQ將重試一段時間,然後最終放棄並將消息放入DLQ。所以如果你想知道原來的原因,你需要在你的WCF服務中添加一些跟蹤來捕獲和跟蹤拋出的異常。

相關問題