我正在尝试开发一个多线程的activemq消费者。 消息在多个线程中处理。 是否有可能在某些异常或失败的情况下回滚特定线程的消息? 我正在调查session.rollback()和session.commit()但是如果我调用这些方法,我将如何确保特定消息被回滚?
如果我可以有选择地提交一些消息,我也是开放的。
提前致谢。
此致 Aeijit
答案 0 :(得分:0)
您可以使用Session.CLIENT_ACKNOWLEDGE并回滚和提交来管理消息确认,或者最好make use of a transaction manager来处理此行为。您应该查看message redelivery and dead-letter queue handling以了解可用于处理回滚消息的选项。
答案 1 :(得分:0)
取决于您的交易边界的设置位置。通常,每个线程都有自己的事务,并将提交/回滚其事务中的所有消息。
另一个选择是只使用常规异常/重试/ DLQ策略来处理单个消息失败,这更容易并且满足大多数要求