-->

配置在MQ系列一“重试延迟”(Configuring a 'retry delay'

2019-07-03 14:09发布

我希望有人能帮助我 - 我在EJB /基于JMS的应用程序使用JBoss 5.1和MQ系列7。 我在我的应用程序的多个消息驱动Bean上的MQ系列消息队列每个聆听。 当消息的处理过程中遇到错误时,我需要能够配置一个“重试延迟”,使MQ系列等待试图重新传递消息之前的一段时间。 我已经通过MQ系列文档梳理广泛,并且还没有找到一种方法,在MQ系列做到这一点。 我知道JBoss的默认的JMS提供者有办法做到这一点,但我目前只限于使用MQ系列。 因为我一直无法设定重试延迟 - 当我有一个失败的消息,我的应用程序陷在传达信息和不断回滚的紧密循环。 任何人都可以帮助,如果有在MQ系列的某些配置选项,让我重新提供一个失败的消息之前等待X毫秒我明白了吗?

Answer 1:

这很可能是制作一个小的基础设施对这一问题的机会。

既然你可以看看JMSDeliveryCount当消息已经进入了豆(你处理前 - 考虑提交范围),你可以看到它有一对夫妇回滚已经围绕将消息发送到一个分级队列中,但附加在JMS性能目标队列名称,以便您可以在以后使用它。

一个简单的方法可以在某些时间间隔运行以清除暂存队列 (每5分钟例如)和到路由队列发送消息。

另一种方法可以坐在路由队列 ,并期待在JMS属性(其加入目的队列的名称),并沿给原单目的地发送消息。

这是一个穷人的经纪人,但它会acheive的目标。 这是事实,没有在真正做你想做的并不多建。



Answer 2:

我觉得你的运气了。 据我知道你可以在这种情况下调整的唯一参数是时代的最大数量的消息将重试(BOTHRESH),并在该消息将如的号码发送异常/搁置队列(BOQUEUE)的名称重试次数超过最大。



Answer 3:

您可以指定一个重试限制,使得连续回退将在指定的尝试后停止。



文章来源: Configuring a 'retry delay' in MQ Series