如何使用 Apache Active (Amazon) MQ 配置 XA 事务超时?

时间:2021-01-29 21:32:12

标签: activemq

我正在尝试设置 JMS 客户端以使用具有可变超时的 XA 事务,并与 Active MQ 经典(带有 ActiveMQ 代理 5.15.4 的 Amazon MQ)对话

调用jmsSession.getXAResource().setTransactionTimeout(timeOut)返回false,表示没有成功。这意味着向代理发送 SESS_XA_SET_TIMEOUT_RESP 导致 !OK,但我没有看到任何可以解释原因的日志(就此而言,到目前为止我看不到来自代理的任何日志) .相同的 XA 逻辑代码适用于 Artemis。

我发现 Resource Manager Configuration 说可以在代理配置文件中设置 [default] 事务超时,但是不清楚具体如何指定,configuration file schema 没有提到 {{ 1}} 属性,我也看不到任何可以指定的“通用”属性列表。

问题分为两部分:

  1. 如何配置Resource Manager Configuration中提到的“默认”事务超时
  2. 是否有特殊原因我无法以编程方式更改事务超时。

1 个答案:

答案 0 :(得分:0)

好的,简短的回答 - ActiveMQ Classic (5.x) 不支持分布式事务超时。

我显然正在查看 Artemis 的客户端代码,而不是 Classic 的。在经典客户端中,TransactionContext.setTransactionTimeout() 仅返回 false:

@Override
public boolean setTransactionTimeout(int seconds) throws XAException {
    return false;
}

据我所知,这意味着 XA 事务永远不会超时,但我找不到任何讨论它的文档。

相关问题