2013-08-22 13 views
2

我將使用一個Session在它(以及任何相應的寫入)成功完成後提交讀取JMS消息。但是,如果我有一個錯誤,並且必須進行回滾,我想先處理新的消息,而不是那個已經(導致???)必須回滾的錯誤的消息。我希望最終重新處理失敗的消息,但不要一遍又一遍地重複處理其他未曾看到的消息,並等待採取措施移除違規消息或修復造成其失敗的環境。如何確保在回滾會話中讀取的JMS消息在從未讀取消息之後進行處理?

這是自動嗎? (如果有的話,將使用Sonic MQ)。如果是這樣,這個問題的其餘部分是沒有意義的。

我是否需要或者甚至可以重置失敗消息的優先級以將它推回隊列中(在其他未決消息後面,如果有的話)?如果我需要重新設置優先級,那麼我該如何設置該「優先級」,因爲我已經回滾了最初讀取該消息的事務。

回答

0

我不知道功能的支持你的要求外的開箱聲波MQ,但也有其他選擇:

  • 使用郵件失敗的第二個隊列。所以失敗的消息再次在另一個隊列上發送。例如,如果第一個隊列爲空,則可以開始處理。

  • 重新發送在同一隊列中的消息(具有相同或甚至具有較低優先級)

在兩種情況下,已經發送的消息後,有在主隊列中的正常commit

相關:Message processing with priorities。從詹姆斯石的回答報價:

JMS規範指出:「JMS不要求提供者嚴格執行信息的優先級排序;但是,它應該盡最大努力提前實現正常郵件的加急的消息。」

相關問題