【问题标题】:activemq constantly retrying error messages and not picking up new messagesactivemq 不断地重试错误消息而不是接收新消息
【发布时间】:2012-07-08 13:41:17
【问题描述】:

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

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

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

感谢您的帮助。

-Pulkit

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

【问题讨论】:

  • 您能否添加一些有关如何设置重试以及如何定义/处理失败消息的详细信息?上述问题中没有足够的信息。
  • 我认为“毒消息”是社区接受的正确术语

标签: queue activemq message-queue


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 2022-01-14
    • 2020-03-24
    相关资源
    最近更新 更多