我有一个用例,可能会在ActiveMQ队列上建立消息。目标是优先级更高,首先执行更新的消息。超过某个时间的高优先级消息应以较低的优先级执行。
根据我的阅读,JMS选择器不支持NOW()的概念; (即)
JMSTimestamp < NOW() - 30 MINUTES
我读到了使用过期时间的建议。根据我对redelivery policy的理解,过期的消息与失败的消息一起进入同一队列。有没有办法让过期的消息移动到不同的队列(queue.A)然后失败的消息(DLQ)?
感谢。
答案 0 :(得分:2)
在ActiveMQ 5.x中,我没有办法使用标准的代理配置选项来实现这一点。这就是说你总是可以编写自己的BrokerPlugin来拦截过期的消息并将它们发送到其他地方。
如果您使用的是ActiveMQ Artemis,那么您可以通过将其配置为执行所需操作来轻松完成此操作,Failed Delivery和Expiry地址配置允许您处理此方案。