如何控制与提交关联的ActiveMQ消息?

时间:2019-07-11 23:25:27

标签: transactions activemq commit consumer

我需要有关ActiveMQ消费者设计的一些常规指导。目前,我有一个持久的主题使用者,其消息侦听器已注册为异步接收消息。这些消息是通过事务会话接收的。收到这些消息后,我将它们传递到另一个线程上的队列,该线程定期处理这些消息并将其发送到其他服务。如果服务交付成功,则提交会话。

我担心的是,使用者正在与我的调度队列同时接收消息。因此,在将消息A和B发送到另一个服务的时间中,消息C已到达使用者。然后,当我调用commit时,我认为我无意中提交了消息C。

如何控制与交易相关的消息?

如果我要使用MessageConsumer.receive()方法而不是MessageListener来同步接收,我想我可以更好地控制事务边界。在分派队列之前,我将停止对receive()的任何调用,发送当前批处理,然后在提交/回滚后恢复接收和批处理。

任何人都可以验证这个想法或提供一些设计建议吗?谢谢!

编辑:考虑this solution,仅在交易会话和提交而不是确认的情况下使用

0 个答案:

没有答案