我有一个使用tomcat设置的activemq实例用于后台处理消息。它被设置为每10分钟重试一次失败的消息以进行重试。
现在一些脏数据已进入系统,因此消息失败。这没关系,可以在将来修复。但问题是,没有任何新的正确传入消息被处理,并且错误消息不断被重试。
关于可能出现什么问题或如何设置优先级的任何提示?我没有手动控制消息的优先级。
感谢您的帮助。
-Pulkit
编辑:我能够解决问题。问题是,当处理所有脏消息时,是时候重试它们了。因此队列不会消耗任何新消息。 脏消息基本上是由于系统中的一些脏数据而导致异常丢失的消息。重新传送设置是每隔10分钟进行1天的重新传送。 maximumRedeliveries = 144 redeliveryDelayInMillis = 600000 acknowledge.mode =成交答案 0 :(得分:1)
ActiveMQ根据分配了ActiveMQConnectionFactory的RedeliveryPolicy的配置确定消费者的重新传递。本地重新传递会暂停新的消息发送,直到成功重新传递回滚事务消息,因此如果您有一条消息导致您出现某种错误,导致您抛出异常或回滚事务,那么它将被重新传递到最大值-deliveries设置在策略中。由于您的问题没有提供有关您的设置以及您认为错误消息的大量信息,因此我无法真正指导您找到解决方案。
您应该查看“重新投放奖励政策”中的可用设置。您还可以使用setNonBlockingRedelivery方法将重新传递配置为不阻止新邮件分派。