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