我想设置确认的超时期限,即如果代理在一段时间内没有收到来自消费者的特定消息的确认,那么代理应该将消息重新发送给消费者。是否可以在代理中设置此类设置???
这里有几个链接解释了如何使用ActiveMQ 5.9解决这个问题:
- https://issues.apache.org/jira/browse/AMQ-3394
- https://planet.jboss.org/post/coming_in_activemq_5_9_a_new_way_to_abort_slow_consumers
总结一下:
- 如果消费者 JVM 死亡,代理和消费者之间的 JMS 连接将超时,任何未确认的消息将被重新安排交付
- 如果 JMS 连接没有中断,但使用者在处理消息时卡住,
AbortSlowAckConsumerStrategy
将在达到配置的慢速阈值时中止慢速使用者,默认值是 30 秒未确认消息的使用者很慢
请参阅 http://activemq.2283324.n4.nabble.com/Acknowledgement-Timeout-td4531016.html
重新交付策略不支持此功能。 JMS 是 面向连接,因此假设如果连接是 活着,没有ACK,消费者有充分的理由不AKAC。 还。