2012-04-21 84 views
2

我瞭解死信隊列和毒物隊列之間的區別。我將在交易和耐久性方面發言。死信隊列和毒物隊列

DLQ:客戶端發送消息。 MSMQ無法傳遞消息。消息仍在隊列中,等待發送到目標隊列。

PQ:郵件已成功發送。 WCF服務處理消息。 WCF操作期間發生了一些錯誤。消息被放置在毒物隊列中。

(請糾正我,如果我錯了,上面)

現在,如果WCF服務遇到錯誤,並在適當位置(屬性)交易範圍,那麼它是如何把帶毒隊列中的消息還是需要開發?如果需要開發,那麼它是如何完成的? 處理中毒訊息怎麼樣?有沒有辦法將它們放回隊列再次處理?如何確定信息是否是毒藥?例如,WCF中的操作可能會遇到錯誤,但可以從中恢復。

回答

0

您可以在MSDN - How to: Exchange Messages with WCF Endpoints and Message Queuing Applications

閱讀更多關於Poison Message Handling on MSDN更多關於MSMQ「當一個事務中的服務讀取從目標隊列中的消息,該服務可能無法處理因各種原因消息,該消息隨後爲了處理重複失敗的消息,可以在綁定中配置一組毒性消息處理屬性,有四個屬性:ReceiveRetryCount,MaxRetryCycles,RetryCycleDelay和ReceiveErrorHandling。「

+0

我沒有讀過這個,但在MSDN提供的示例中,我無法看到這種行爲。事實上,下次服務器端服務啓動時,它不會處理隊列中的任何新消息或舊消息。所以在服務器端,我添加了代碼來引發異常。我看到消息仍在隊列中。下次我從客戶端發送messasge - 服務器沒有收到它,但它在MSMQ中。 – 2012-04-21 18:49:14

0

只有消息隊列將消息放在死信隊列中。應用程序只能讀取和刪除死信隊列中的消息。