jboss eap JmsComponent驼峰上下文中的事务

jboss eap JmsComponent驼峰上下文中的事务,jboss,transactions,apache-camel,Jboss,Transactions,Apache Camel,使用JtaTransactionManager设置事务时遇到问题。我已经尝试了在互联网上能找到的一切。 如果路由或来自此路由的路由中存在任何异常,我希望进行回滚 以下是我的骆驼上下文bean: WebSphere MQ有一个旧问题,我现在只能很快找到这个参考 也许它给了您一个提示(在任何情况下,MQ服务器上的跟踪日志都可能显示更多信息)您的代码片段有几个问题。不应从NDI事务管理器(JTA事务管理器)分配JmsTransactionManager。请注意,如果您将组件设置为“Transact”

使用JtaTransactionManager设置事务时遇到问题。我已经尝试了在互联网上能找到的一切。 如果路由或来自此路由的路由中存在任何异常,我希望进行回滚

以下是我的骆驼上下文bean:


WebSphere MQ有一个旧问题,我现在只能很快找到这个参考
也许它给了您一个提示(在任何情况下,MQ服务器上的跟踪日志都可能显示更多信息)

您的代码片段有几个问题。不应从NDI事务管理器(JTA事务管理器)分配JmsTransactionManager。请注意,如果您将组件设置为“Transact”,并提供一个连接工厂,那么SpringJMS将为您实例化一个JmsTransactionManager,并将其连接到连接工厂。所以,只要:

 <bean id="mq" class="org.apache.camel.component.jms.JmsComponent">
        <property name="connectionFactory" ref="jmsConnectionFactory" />
       <property name="transacted" value="true"/>
       <property name="cacheLevelName" value="CACHE_NONE" />
       <property name="receiveTimeout" value="100000"/>

然后放下:

 <bean id="jmsTransactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
        <property name="transactionManagerName" value="java:/TransactionManager" />

以及:


也许可以尝试以下方式:

<bean class="com.ibm.mq.jms.MQConnectionFactory" id="source.mqConnectionFactory">
    <property name="connectionNameList" value="10.0.0.207(1414)"/>
    <property name="queueManager" value="MY.QUEUE.MANAGER"/>
    <property name="channel" value="SYSTEM.DEF.SVRCONN"/>
    <property name="transportType" value="1"/>
    <property name="clientReconnectOptions" value="67108864"/>
</bean>
<bean
    class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter" id="source.mqUserCred">
    <property name="targetConnectionFactory" ref="source.mqConnectionFactory"/>
    <property name="username" value="my-password"/>
</bean>
<bean class="org.apache.activemq.jms.pool.PooledConnectionFactory"
    id="source.pooledConnectionFactory" primary="true">
    <property name="maxConnections" value="1"/>
    <property name="idleTimeout" value="0"/>
    <property name="connectionFactory" ref="source.mqUserCred"/>
</bean>
<bean class="org.apache.camel.component.jms.JmsComponent" id="source">
    <property name="configuration">
        <bean class="org.apache.camel.component.jms.JmsConfiguration">
            <property name="connectionFactory" ref="source.pooledConnectionFactory"/>
            <property name="transacted" value="true"/>
            <property name="receiveTimeout" value="100000"/>
            <property name="maxConcurrentConsumers" value="5"/>
        </bean>
    </property>
</bean>

您是否将wildfly camel与EAP一起使用。这是建议使用的,因为他们已经做了所有艰苦的工作,使它一起很好地工作。
<bean class="com.ibm.mq.jms.MQConnectionFactory" id="source.mqConnectionFactory">
    <property name="connectionNameList" value="10.0.0.207(1414)"/>
    <property name="queueManager" value="MY.QUEUE.MANAGER"/>
    <property name="channel" value="SYSTEM.DEF.SVRCONN"/>
    <property name="transportType" value="1"/>
    <property name="clientReconnectOptions" value="67108864"/>
</bean>
<bean
    class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter" id="source.mqUserCred">
    <property name="targetConnectionFactory" ref="source.mqConnectionFactory"/>
    <property name="username" value="my-password"/>
</bean>
<bean class="org.apache.activemq.jms.pool.PooledConnectionFactory"
    id="source.pooledConnectionFactory" primary="true">
    <property name="maxConnections" value="1"/>
    <property name="idleTimeout" value="0"/>
    <property name="connectionFactory" ref="source.mqUserCred"/>
</bean>
<bean class="org.apache.camel.component.jms.JmsComponent" id="source">
    <property name="configuration">
        <bean class="org.apache.camel.component.jms.JmsConfiguration">
            <property name="connectionFactory" ref="source.pooledConnectionFactory"/>
            <property name="transacted" value="true"/>
            <property name="receiveTimeout" value="100000"/>
            <property name="maxConcurrentConsumers" value="5"/>
        </bean>
    </property>
</bean>