2008-11-13 140 views
6

有人可以向我解釋處理失敗傳遞郵件的這3種方法之間的區別嗎?WCF和MSMQ失敗處理

  • 有害隊列服務
  • 死信隊列服務
  • 使用響應服務,以處理故障

我有「編程WCF」,但我真的不明白時,你會使用其中之一,或者使用其中的一個以上時有意義。謝謝!

回答

8

死和毒是兩個不同的概念。 中毒消息是可以從隊列中讀取的消息,但是您的代碼不知道如何處理它,以便您的代碼發出異常。如果這種情況持續一段時間,您希望將此消息放在不同的隊列中,以便處理其他消息。對此的一個很好的解釋是on MSDN

死信是一個甚至不被隊列處理的消息。網絡中斷或接收的MSMQ計算機已關閉。類似的東西。 Windows會在一段時間後自動將消息放入死隊列中。所以建議編寫一個監視死隊列的服務。

2

中毒消息/死信消息隊列用於將已確定爲無法傳送的消息放入不會再嘗試傳送它們的隊列中。如果您想手動查看失敗的消息並稍後處理它們,則可以這樣做。當您想通過反覆重試來防止惡意消息降低系統性能時,可以使用這些類型的隊列。

另一方面,響應服務將用於通知發件人處理消息時出錯。通常在這種情況下,您不打算手動處理錯誤消息,並且需要讓發送消息的系統拒絕該請求。

請注意,這些不是唯一的。如果您正在使用隊列,那麼消息序列化總是有可能發生變化,以便破壞隊列中的消息,在這種情況下,即使使用響應服務,您仍然可能想要出現死信隊列。

+0

我很欣賞答案,但它不是我所問的。首先,我想知道毒藥和死信的區別。另外,我更關心處理這些隊列的服務,而不是我自己的隊列。 – chessguy 2008-11-14 18:32:14