0

我有一个使用 tomcat 设置的 activemq 实例,用于后台消息处理。它被设置为每 10 分钟重试一次失败的消息,持续一个重试周期。

现在一些脏数据已进入系统,因此消息失败。这没关系,将来可以修复。但是,问题是没有新的正确传入消息得到处理,并且错误消息不断被重试。

关于可能是什么问题或如何设置优先级的任何提示?我没有手动控制消息的优先级。

谢谢你的帮助。

- 讲义

编辑:我能够解决问题。问题是,当所有脏消息都被处理时,是时候重试它们了。因此,队列没有消耗任何新消息。脏消息基本上是由于系统中的一些脏数据而引发异常的消息。重新交付设置是每 10 分钟重新交付 1 天。maximumRedeliveries=144 redeliveryDelayInMillis=600000 acknowledge.mode=transacted

4

1 回答 1

1

ActiveMQ 根据分配了 ActiveMQConnectionFactory 的 RedeliveryPolicy 的配置来确定消费者的重新传递。本地重新传递会暂停新消息的发送,直到成功重新传递回滚的事务消息,因此如果您有一条消息导致您出现某种错误,例如您抛出异常或回滚事务,那么它将重新传递到最大重新传递-策略中的交付设置。由于您的问题没有提供有关您的设置以及您认为是错误消息的太多信息,因此我无法真正引导您找到解决方案。

您应该查看重新投递策略中可用的设置。您还可以使用 setNonBlockingRedelivery 方法配置重新传递以不阻止新消息发送。

于 2012-07-11T20:52:38.797 回答