我的设置: 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
之前有人解决了这个问题吗?我也很感谢有用的提示。
答案 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>