阻止竞争客户端从ActiveMQ接收消息

时间:2014-09-30 10:08:31

标签: jms activemq messaging

我们有一个JMS队列,多个竞争客户端正在从此队列中读取。 一旦获取并成功处理了消息,我们希望发送确认删除(即客户端确认) 但是,我们希望确保如果一个客户端选择了该消息,则另一个客户端不应该从队列中取出它。 activeMQ是否使用某些配置提供此功能?

此外: 如果在选择消息后消息处理失败,那么它无法被确认回来,在这种情况下我们应该像其他客户端线程一样拾取消息。是否可以开箱即用配置,可能是指定超时值?

此致 JE

1 个答案:

答案 0 :(得分:1)

您需要花一些时间来理解Topic and a Qeueue之间的区别,以便理解为什么第一个问题不是问题。

对于第二个问题,它取决于您正在使用的ACK模式以及如何处理消息同步或异步。通常,对于要控制重新传输的处理,您可以在事务内部进行工作,如果处理失败,则在回滚TX时将重新传递消息。 ActiveMQ支持客户端和代理端redelivery policies,它控制在发送到DLQ之前重新传递消息的时间。