簡體   English   中英

如何使用WCF在事務性MSMQ中明確標記消息中毒

[英]How can I explicitly mark messages as poisoned in a transactional MSMQ with WCF

我正在使用MSMQ版本4並具有事務隊列。 我正在使用WCF來偵聽傳入消息的隊列。

處理時,對第三方組件的依賴可能會在較長時間內失敗或不可用。 為了彌補這一點,我使用MSMQ 4( http://msdn.microsoft.com/en-us/library/aa395218.aspx )中的有害消息處理功能,用y等待時間重試消息x次。

但是在某些情況下,我知道輸入消息無效/中毒。 發生這種情況時,拋出異常會使消息跟隨毒性消息處理例程,因為所有其他消息都具有所有重試和等待時間。 但是當我知道消息中毒時,我沒有理由重試並等待配置的時間讓毒性隊列處理它。

有沒有辦法明確地將消息標記為中毒,以便它不會遵循配置的重試流並立即移動到毒性隊列?

好吧,我會在這種情況下建議在DB中存儲請求數據並且不拋出任何異常,以便成功處理WCF消息並將從隊列中刪除。

這些數據我們可以在以后處理,如果需要,很容易從數據庫處理數據而不是監視/管理毒物隊列。

您可以根據您可以決定消息的下一個處理時間戳來進行一些配置,並且線程可以從DB重新處理此類消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM