簡體   English   中英

MSMQ + WCF-延遲不斷增加重試

[英]MSMQ + WCF - Retry with Growing Delay

我在WCF中使用MSMQ 4。 我們有一個Microsoft Dynamics插件將消息放入隊列中。 服務接收消息並向另一個Web服務器發出HTTP請求。 Web服務器通過將另一條消息放在不同的隊列中進行響應。 第二個服務接收消息並將響應發送回Dynamics ...

我們將重試隊列設置為重試3次,然后等待5分鍾,然后重試。 Dynamics系統有時會花費很長時間(由於使用其他插件),因此我們可以在提交數據庫事務之前往返。 用戶再過5分鍾都看不到更新。

我很好奇是否有一種方法可以配置重試機制以遞增方式重試。 因此,它第一次失敗時,僅等待幾秒鍾。 如果第二次失敗,它將等待兩次。 重試之間的時間一直在增長。

僅減少重試之間的時間的問題在於,一條錯誤消息很容易填滿日志文件。

事實證明,沒有內置的方法可以做到這一點。 一個稍微涉及的選項是創建多個隊列,每個隊列都有自己的重試/中毒子隊列,每個隊列的重試延遲都在增加。 您可以為每個隊列重用相同的處理程序-唯一改變的是配置。 您還需要一個處理程序,該處理程序可以讀取有毒子隊列( service )並將消息移至鏈中的下一個隊列( client )。

因此,您將receiveErrorHandling設置為Move maxRetryCyclesreceiveRetryCount僅為1 每個隊列將使用不斷增長的retryCycleDelay 您創建的每個隊列都會自動為其創建一個poison子隊列。 您只需從每個poison子隊列中讀取內容,並使用客戶端將其移至下一個隊列即可。

我確信有人可以編寫一些代碼,該代碼會隨着retryCycleDelay的增加而自動創建N個隊列,並以編程方式將其連接起來。 由於每個隊列都使用相同的處理程序/客戶端,所以這沒什么大不了的。

暫無
暫無

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

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