我正在尝试开发一个多线程的activemq消费者。 消息在多个线程中得到处理。 是否有可能回滚特定线程的消息以防发生某种异常或故障? 我正在调查session.rollback()和session.commit(),但如果我调用这些方法,我将如何确保一个特定的消息得到回滚?activemq事务性支持
我也打开,如果我可以有选择地提交一些消息。
在此先感谢。
问候, Aeijit
我正在尝试开发一个多线程的activemq消费者。 消息在多个线程中得到处理。 是否有可能回滚特定线程的消息以防发生某种异常或故障? 我正在调查session.rollback()和session.commit(),但如果我调用这些方法,我将如何确保一个特定的消息得到回滚?activemq事务性支持
我也打开,如果我可以有选择地提交一些消息。
在此先感谢。
问候, Aeijit
它取决于您设置事务边界的位置。通常,每个线程将拥有自己的事务,并将提交/回滚其事务中的所有消息。
另一种选择是仅使用一般异常/重试/ DLQ策略来处理单个消息故障,这更容易并且满足大多数要求
您可以通过使用Session.CLIENT_ACKNOWLEDGE和回滚自己管理的消息确认并提交,或最好make use of a transaction manager来处理这种行为你。您应该看看message redelivery and dead-letter queue handling以了解可用于处理回滚消息的选项。