我正在嘗試開發一個多線程的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以瞭解可用於處理回滾消息的選項。