apache-camel - XA 事务支持 JBoss Widlfly 10、camel-2.15.3 和 Red Hat AMQ 7.2
问题描述
问题陈述:在“JTA/XA”模式下,当使用骆驼从“Source-Q”消费消息并且执行业务逻辑(成功处理没有任何错误或异常)后,无法将响应发送回“Destination-Q”。
启用了“camel”日志记录,但没有为“Destination-endpoint”找到“错误/异常”。
使用的技术堆栈:
- JBoss Wildfly 10(在 Windows 上)
- activemq-rar-5.11.0.redhat-630356.rar(根据https://maven.repository.redhat.com/ga/org/apache/activemq/activemq-rar/最新)
- 骆驼2.15.3
- 红帽 AMQ 7.2 (Linux)。使用“artemis create”创建具有默认配置的实例。
JBoss Wildfly 10 遵循“资源适配器方法”以与 Red Hat MQ 7.2 集成。
JBoss Wildfly 10 的片段——“standalone.xml”配置如下:
<subsystem xmlns="urn:jboss:domain:resource-adapters:4.0">
<resource-adapters>
<resource-adapter id="activemq">
<archive>
activemq-rar-5.11.0.redhat-630356.rar
</archive>
<transaction-support>XATransaction</transaction-support>
<config-property name="ServerUrl">
tcp://redhatamqhostname:61616?jms.redeliveryPolicy.maximumRedeliveries=2
</config-property>
<config-property name="UserName">
defaultUser
</config-property>
<config-property name="InitialRedeliveryDelay">
1000
</config-property>
<config-property name="Password">
defaultPassword
</config-property>
<connection-definitions>
<connection-definition class-name="org.apache.activemq.ra.ActiveMQManagedConnectionFactory" jndi-name="java:/XAconnectionFactory" enabled="true" use-java-context="true" pool-name="ConnectionFactory">
<xa-pool>
<min-pool-size>1</min-pool-size>
<max-pool-size>20</max-pool-size>
<prefill>false</prefill>
<is-same-rm-override>false</is-same-rm-override>
</xa-pool>
</connection-definition>
</connection-definitions>
</resource-adapter>
</resource-adapters>
</subsystem>
下面提供了来自“camel-context”配置的片段:
<bean id="JBOSSRMQ" class="org.apache.camel.component.jms.JmsComponent">
<property name="configuration">
<bean class="org.apache.camel.component.jms.JmsConfiguration">
<property name="connectionFactory" ref="connectionFactory" />
<property name="transactionManager" ref="transactionManager" />
<property name="transacted" value="false" />
<property name="concurrentConsumers" value="1" />
<property name="deliveryPersistent" value="true" />
<property name="requestTimeout" value="10000" />
<property name="cacheLevelName" value="CACHE_NONE" />
</bean>
</property>
</bean>
<jee:jndi-lookup id="connectionFactory" jndi-name="java:/XAconnectionFactory"/>
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"/>
有什么想法/想法让它发挥作用吗?提前致谢!
解决方案
推荐阅读
- compiler-construction - 达到定义分析 - 我的解决方案是否正确
- javascript - 在 HTML 下拉列表中显示选定的 JS 值
- c# - 如何检查布尔数组中的特定索引是否为真是C#
- python - 如何在列表中显示小数点后 2 位?
- pandas - 无法从 DataFrame 中删除空格
- python - google colab 上的 flask-ngrok 应用程序给出了错误 ERR_CONNECTION_REFUSED
- python - 如何使用 opencv 或任何拼接器算法将视频转换为长全景图?
- prometheus - Prometheus:如何获得一段时间内所有唯一记录的总和?不是价值的总和
- node.js - 如何设置环境变量以及如何将环境变量作为参数传递
- javascript - Webpack 构建工作正常,但手表无法正常工作