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

时间:2016-04-21 12:25:04

标签: jboss transactions jboss7.x

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

我需要增加服务的事务超时,但我没有找到一种工作方法来增加从standalone.xml的默认值继承的事务超时值:

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

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

注意:MDB或onMessage()方法上的@TransactionTimeout注释未按预期工作。消息启动的事务总是被Transaction Reaper杀死:

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

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

1 个答案:

答案 0 :(得分:0)

经过全面研究后,我非常肯定,在此设置中没有明确配置消息驱动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>