我试图将ActiveMQ队列用作Apache Storm Spout。
我使用" INDIVIDUAL_ACK"策略。
在我的想法中,我计划定期触发session.recover(),重新发送无法确认的消息(Bolt处理链中的错误)。
但是如果我这样做,那么当前处理的所有与Storm元组相对应的消息将被重新发送。我会试着限制这种现象。
理想情况下,我想参数延迟,所有发送的消息都更年轻,不应重新发送此延迟(此延迟也应与Storm元组处理的超时同步)
我已经阅读了有关AMQ政策(http://activemq.apache.org/redelivery-policy.html)但我不确定redeliveryDelay参数是否适用于我的问题。
任何提示?
弗兰克
答案 0 :(得分:0)
使用INDIVIDUAL_ACKNOWLEDGE你不会使用session.recover(),你会做一个message.acknowledge()。此外,最佳做法是仅将JMS样式的事务用于自动可恢复的错误(即主机已关闭)。对于永远不会起作用的上下文问题(即坏数据),您应该将消息移动到另一个队列,即一些.DLQ或.ERR队列。