2013-04-23 47 views
0

我一直收到来自队列1的所有JMS消息并试图对其进行处理。
如果我尝试处理5次并回滚5次,我希望ActiveMQ在一段时间(例如5分钟)内将消息放入不同的队列。
我该如何做到这一点?从死信队列中恢复

回答

1

您可以将自定义属性添加到消息中 - 如RESUBMIT_TIMES,并将其增加,直到达到5。阅读:JMS

如果达到5,则将其移动到5分钟队列,方法是设置另一个具有当前时间戳的属性。例如:

message.setStringProperty("TimeOfDispatch", LocalDate.now().toString("yyyy-MM-dd hh:MM:ss")); 

5minutesqueue是检查如果在5分钟之后(通过检查目前的时间从标题的时间)又一个消费

+0

感谢尤金。它看起来像我需要从客户端处理它,但问题是如果我可以处理移动消息的JMSXDeliveryCount == 5从队列1到Queue2达5分钟(之后移回Queue1)在侧面ActiveMQ的。可能吗? – surlac 2013-04-23 10:04:37

+0

@surlac我不知道,但说实话,我不认为他们有这样的事情。它取决于你的编码 – Eugene 2013-04-23 10:12:35

+0

ActiveMQ有[“deadLetterStrategy”](http://activemq.apache.org/message-redelivery-and-dlq-handling.html)配置,它非常接近我所需要的,但不完全匹配。 – surlac 2013-04-23 12:15:36