首页 > 解决方案 > XA 事务支持 JBoss Widlfly 10、camel-2.15.3 和 Red Hat AMQ 7.2

问题描述

问题陈述:在“JTA​​/XA”模式下,当使用骆驼从“Source-Q”消费消息并且执行业务逻辑(成功处理没有任何错误或异常)后,无法将响应发送回“Destination-Q”。

启用了“camel”日志记录,但没有为“Destination-endpoint”找到“错误/异常”。

使用的技术堆栈:

  1. JBoss Wildfly 10(在 Windows 上)
  2. activemq-rar-5.11.0.redhat-630356.rar(根据https://maven.repository.redhat.com/ga/org/apache/activemq/activemq-rar/最新)
  3. 骆驼2.15.3
  4. 红帽 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"/>

有什么想法/想法让它发挥作用吗?提前致谢!

标签: apache-cameljboss-amq

解决方案


推荐阅读