簡體   English   中英

如何通過使用Spring-JMS拋出異常來從MQ中刪除消息

[英]How Not Delete message from MQ by throwing Exception using Spring-JMS

我正在使用spring-jms messageListenerContainer收聽消息。 當發生錯誤時,我想引發異常並停止從MQ中刪除消息。 我只想對MQ使用AUTO_ACKNOWLEDGE會話。 我該如何實現? 應該拋出哪種異常,以使消息不會從MQ中刪除並再次發送?

我們在項目中有類似的要求。 盡管我們使用IBM WMQ,但這將使您對如何實現此目標有所了解。

  1. 閱讀來自MQ的消息,說#Queue1。 閱讀是指提取(閱讀和刪除),而不僅僅是瀏覽郵件。
  2. 在處理消息時,如果發生任何錯誤,則將消息推送到其他隊列,例如#Queue2。
  3. 創建一個路由器,將所有消息從#Queue2帶到#Queue1。 或者,您可以在處理#Queue1上的消息之前檢查並處理#Queue2。

這是我們在出現錯誤或異常的情況下一次又一次重播相同消息的方式。

AUTO_ACKNOWLEDGE模式下,消息在傳遞到應用程序后會自動從隊列中刪除。

使用@ user2004685建議的使用中間隊列需要額外的管道。 我建議使用事務處理會話。 在事務下接收消息,並且在處理消息時如果有任何錯誤,請調用rollback()以便使消息可重新交付。

暫無
暫無

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

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