如何使用 ActiveMQ 资源适配器修改 JBoss EAP 6.4 消息驱动 Bean 的事务超时值



我的设置:JBoss EAP 6.4.0.GA (AS 7.5.0.Final-redhat-21)ActiveMQ 5.12,ActiveMQ JCA 资源适配器 5.12,使用 ActiveMQ 队列的消息驱动 Bean

我需要增加服务的事务超时

,但我没有找到一种方法来增加从独立默认值继承的事务超时值.xml:

<coordinator-environment default-timeout="300"/>

更改此全局值不是首选解决方案(这是一种有效的解决方法),我只需要为一个服务更改它,尤其是包含的消息驱动的 bean!

注意:MDB 或 onMessage() 方法上的@TransactionTimeout注释没有按预期工作。消息发起的事务始终被事务收割者杀死:

11:41:47,959 WARN  [com.arjuna.ats.arjuna] (Transaction Reaper) ARJUNA012117: TransactionReaper::check timeout for TX 0:ffffac112a2d:-6105c785:5718932a:af in state  RUN
11:41:47,960 WARN  [com.arjuna.ats.arjuna] (Transaction Reaper Worker 0) ARJUNA012095: Abort of action id 0:ffffac112a2d:-6105c785:5718932a:af invoked while multiple threads active within it.
11:41:47,961 WARN  [com.arjuna.ats.arjuna] (Transaction Reaper Worker 0) ARJUNA012108: CheckedAction::check - atomic action 0:ffffac112a2d:-6105c785:5718932a:af aborting with 1 threads active!
11:41:47,973 WARN  [com.arjuna.ats.arjuna] (Transaction Reaper Worker 0) ARJUNA012121: TransactionReaper::doCancellations worker Thread[Transaction Reaper Worker 0,5,main] successfully canceled TX 0:ffffac112a2d:-6105c785:5718932a:af

以前有人解决这个问题吗?我也感谢有用的提示。

经过全面的研究,我很确定,在此设置中确实没有明确配置消息驱动 Bean 事务超时的解决方案。

原因是,事务是由消息传递系统启动的,而负责的 ActiveMQ JCA 资源适配器不支持此功能。

否则(例如,当使用支持它的HornetQ时),有两种配置方法:

  • 内部@MessageDriven注释:
    @ActivationConfigProperty(propertyName = "transactionTimeout", propertyValue = "..")

  • 在部署描述符中:
    <message-driven-deployment ... > <config-property> <config-property-name>transactionTimeout</config-property-name> <config-property-value>...</config-property-value> </config-property> </message-driven-deployment>

最新更新