簡體   English   中英

如何限制JMS DefaultMessageListenerContainer重試消息的次數?

[英]How do I limit the amount of times a JMS DefaultMessageListenerContainer will retry a message?

我正在使用Spring JMS連接到Websphere MQ服務器。 我實現了SessionAwareListener接口來創建自定義偵聽器,重用業務邏輯的舊代碼。

在測試時,監聽器拋出一個我無法捕獲的StringIndexOutOfBoundsException。 但是,我在日志中看到以下打印了大約32次,然后DMLC停止了。

WARN  - Execution of JMS message listener failed

有沒有辦法控制DMLC重試消息的頻率,以及如何處理未捕獲的異常?

您始終可以檢查JMSDeliveryCount。 如果它超過您認為最大的數字,那么就不要處理消息並返回。

您還可以配置Websphere以在嘗試某些嘗試后將錯誤消息移動到異常目標。

一些錯誤后放回消息隊列被稱為在WebSphere MQ的世界退出

如何處理它有兩種選擇:

  1. 在隊列管理器中:您可以為給定隊列配置回退閾值回退重新排隊名稱屬性。 達到回退閾值后,隊列管理器會將消息放入由回退重新排隊名稱指定的隊列,而不是重新傳遞它。 有關更多信息,請參閱WebSphere MQ隊列屬性

  2. 在您的應用程序中:如果使用JMS API,請在開始處理消息之前通過調用msessage.getIntProperty(“JMSXDeliveryCount”)來檢查JMSXDeliveryCount屬性。 如果達到某個閾值,則將錯誤處理為錯誤。

暫無
暫無

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

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