當前設置包括拿起從本地隊列中的消息並提取信息,並提出在我的SQL database.According我設計一個窗口服務處理有害消息
- 服務拾取消息從隊列中(我在這裏使用Peek())。
- 將其發送到數據庫。
- 如果由於某種原因,我在將其保存到數據庫時遇到異常,則消息返回到隊列中,這對我來說是可靠的。
- 我記錄錯誤,以便用戶可以知道問題並修復它。
異常示例:如果DBconnection在保存消息到數據庫的過程中丟失,那麼消息不會因爲它們在隊列中而丟失。我不直接從數據庫獲取確認,該消息被插入。因此,用戶可以看到日誌並確保DBconnection存在,並且每件事都是正常的,並且我們不會丟失隊列中的任何消息。
但考慮到另一種情況:我將在隊列中獲得的消息來自第三方根據標準架構。架構將保持不變,並且沒有變化。但是我已經看到了一些我在哪裏得到一些格式異常,因爲它沒有提交的消息是回到隊列。在這一點上,這條消息將成爲我的瓶頸,因爲同樣的消息被再次拿起並嘗試處理消息。每次服務會提起相同的消息並得到相同的異常。所以這個循環會無限循環,除非該消息被移除或將該消息放在隊列中。
看看刪除消息:截至目前,如果我去基於格式異常...那麼我可能是錯誤的,因爲我可能會在未來遇到一些其他異常。
有沒有一種方法可以把這個消息放回隊列最後的隊列中,而不是隊列的開始。
需要一些關於如何進一步處理的建議。
注意:隊列是事務性的。
如果錯誤需要人工干預,您不會將它們移動到第二個錯誤隊列嗎? – Bill
我必須去@Bill,就是這樣做的。將拆分的消息移入自己的隊列中,以便管理它們。我們每天處理數十萬條MQ消息,這是唯一可管理的方法。這會使PROD隊列運行並處理它所能做到的事情。然後我們使用Patrol來提醒我們這些隊列何時收到消息。 –
@bill是否有MSMQ功能將這些消息放入故障轉移或備份隊列....或者它應該在代碼上完成。 – Macnique