Camel AMQP 交易问题(使用 Qpid 客户端)

Camel AMQP transactions issue (with Qpid client)

我正在尝试通过我创建的 AMQP 连接添加事务,该连接是为了从我的项目连接到外部 AMQP 代理(我无权访问)。

为了使用 SSL 连接到 AMQP 代理,我使用了 Qpid 的 ConnectionFactory 实现:org.apache.qpid.amqp_1_0.jms.impl.ConnectionFactoryImpl.

我正在连接如下内容:

连接是从 Apache Camel (v2.14.1) 路由初始化的,Camel AMQP 组件构建在 JMS 之上,与 Apache Camel 的 AMQP 组件文档中所述完全一致(可在此处找到) : http://camel.apache.org/amqp.html 在部分 "Using Topics").

当我在未启用事务的情况下使用 AMQP 组件时,它工作得非常好。

另一方面,如果我通过以下方式启用交易:

日志显示事务管理器创建成功:

DEBUG org.apache.camel.util.IntrospectionSupport: Configured property: transactionManager on bean: org.apache.camel.component.jms.JmsConfiguration@5b05bf with value: org.springframework.transaction.jta.JtaTransactionManager@1d642e2

DEBUG org.apache.camel.util.IntrospectionSupport: Configured property: cacheLevelName on bean: org.apache.camel.component.jms.JmsConfiguration@5b05bf with value: CACHE_NONE

DEBUG org.apache.camel.util.IntrospectionSupport: Configured property: concurrentConsumers on bean: org.apache.camel.component.jms.JmsConfiguration@5b05bf with value: 1

DEBUG org.apache.camel.util.IntrospectionSupport: Configured property: transacted on bean: org.apache.camel.component.jms.JmsConfiguration@5b05bf with value: true

你能告诉我我做错了什么吗?

(我怀疑我连接的经纪商可能不支持交易)

我已经设法解决了这个问题(很抱歉 post 很晚才在这里给出答案)。我在这里找到了很多有用的知识:http://tmielke.blogspot.ro/2012/03/camel-jms-with-transactions-lessons.html

无论您使用哪个事务管理器(JmsTransactionManager、Atomikos 等),我所要做的就是在端点上设置选项 cacheLevelName=CACHE_CONSUMER。

如果您需要更多信息,您可以在我 post 编辑的 link 中找到所有信息。