繁体   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