以编程方式禁用ActiveMQ消息重新传递

时间:2017-02-23 06:33:02

标签: activemq

当消费者无法处理消息并调用会话回滚时,我需要禁用消息重新传递。目标是将消息保留在队列中而不重新传递,我的后台消费者将继续尝试处理消息。

在connection.getRedeliveryPolicy()中,我看到了自定义重新传递延迟和其他设置的选项,但我没有看到完全禁用重新传递的任何选项。这是否可行(最好以编程方式使用connection.getRedeliveryPolicy()属性,例如。)

1 个答案:

答案 0 :(得分:0)

遗憾的是,没有解决方案可以停用RedeliveryPolicy,但您可以设计代码。

看看ActiveMQ redelivery does not work

也许org.apache.activemq.ActiveMQSession.INDIVIDUAL_ACKNOWLEDGE可以帮到你,但请记住:

  

一旦代理发送了预取限制数量的消息   消费者它不会向该消费者发送任何更多消息   直到消费者承认至少50%的预取   邮件,例如,它收到的prefetch / 2。当经纪人有   收到上述确认后,它将发出进一步的预取/ 2   向消费者提供的消息数量,以及其自身的充值信息   预取缓冲区。请注意,可以指定预取限制   基于每个消费者(见下文)。

另一种解决方案是将消息发送到另一个队列以供后台消费者使用。