我有一個Microsoft消息隊列,該消息隊列中填充了消息。如果處理郵件時出現問題,我想重試郵件,我不想重試郵件immidiatley。 有沒有辦法在MSMQ中的郵件中添加延遲以避免它在一段時間內可用?MSMQ在郵件上添加延遲
另一種選擇是有另一個隊列(一個重試隊列)並每15分鐘讀一次該隊列,但我寧願不這樣做。
我有一個Microsoft消息隊列,該消息隊列中填充了消息。如果處理郵件時出現問題,我想重試郵件,我不想重試郵件immidiatley。 有沒有辦法在MSMQ中的郵件中添加延遲以避免它在一段時間內可用?MSMQ在郵件上添加延遲
另一種選擇是有另一個隊列(一個重試隊列)並每15分鐘讀一次該隊列,但我寧願不這樣做。
你在找什麼是「毒藥信息處理」(即使它不是信息錯誤,但是臨時環境問題)。
這裏有很多文章。這裏有一些:
Poison Message Handling in MSMQ 3.0
Poison Message Handling in MSMQ 4.0
Surviving poison messages in MSMQ
簡單:你必須將它們移動到重試隊列。
所以我最近看到一些代碼在異常邏輯中處理這個問題,代碼有一個內置的重試步驟,在嘗試延遲後嘗試。它失敗了,等待了特定的時間,然後再次嘗試。
本質上它遞歸地嘗試設定次數(每次延長延遲)。相當整潔,沒有理由再有一個隊列。有很多泛型和委託用於執行這些方法。不知道這樣的事情是否可以完成。我懷疑你仍然希望處理消息不能與其他隊列交付的情況。