[英]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的世界退出 。
如何處理它有兩種選擇:
在隊列管理器中:您可以為給定隊列配置回退閾值和回退重新排隊名稱屬性。 達到回退閾值后,隊列管理器會將消息放入由回退重新排隊名稱指定的隊列,而不是重新傳遞它。 有關更多信息,請參閱WebSphere MQ隊列屬性 。
在您的應用程序中:如果使用JMS API,請在開始處理消息之前通過調用msessage.getIntProperty(“JMSXDeliveryCount”)來檢查JMSXDeliveryCount屬性。 如果達到某個閾值,則將錯誤處理為錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.