2014-09-30 40 views
1

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

此外: 如果邮件处理在拾取邮件后失败,因此无法确认回来,在这种情况下,我们应该像其他客户端线程来拾取邮件。是否可以开箱即用配置,可以指定超时值?

问候, JE

回答

1

你需要花一些时间来了解为了理解为什么第一个问题是不是一个问题,一个Topic and a Qeueue之间的差异。

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