HornetQ XA 不参与 Spring 引导的 bitronix 事务
HornetQ XA not participating in bitronix transaction with Spring Boot
我正在尝试从独立的 Spring 引导应用程序连接到 JBoss 7.1.1 中的 HornetQ JMS 服务器 运行。我可以使用如下配置到达服务器并将消息推送到队列:
<bean name="hornetConnectionFactory" class="org.hornetq.jms.client.HornetQXAConnectionFactory">
<constructor-arg name="ha" type="boolean" value="false" />
<constructor-arg>
<bean class="org.hornetq.api.core.TransportConfiguration">
<constructor-arg value="org.hornetq.core.remoting.impl.netty.NettyConnectorFactory" />
<constructor-arg>
<map key-type="java.lang.String" value-type="java.lang.Object">
<entry key="host" value="127.0.0.1" />
<entry key="port" value="5445"></entry>
</map>
</constructor-arg>
</bean>
</constructor-arg>
</bean>
<bean id="defaultDestination" class="org.hornetq.jms.client.HornetQQueue">
<constructor-arg index="0"
value="outgoingMessageQueue"/>
</bean>
<bean id="userCredsConnectionFactory" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
<property name="targetConnectionFactory" ref="hornetConnectionFactory"/>
<property name="username" value="${jms.user}"/>
<property name="password" value="${jms.password}"/>
</bean>
<bean id="jmsConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory" primary="true">
<constructor-arg ref="userCredsConnectionFactory" />
<property name="sessionCacheSize" value="20"/>
</bean>
<bean name="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"
p:connectionFactory-ref="jmsConnectionFactory"
p:defaultDestination-ref="defaultDestination" />
但是 XA 连接不参与我通过 Spring Boot 的 bitronix 支持启用的 JTA 事务。数据库连接正在使用 JTA。我如何 Spring 启动以获取此 JMS 连接以在其事务管理器中登记为 XA 资源?
现在可以使用了。它比我想象的要简单 - 我能够在 application.properties:
spring.hornetq.mode=native
spring.hornetq.host=127.0.0.1
spring.hornetq.port=5445
spring.jta.bitronix.connectionfactory.user=user
spring.jta.bitronix.connectionfactory.password=password
并且 jmsTemplate 自动获取了 XA JmsConnection。所有较早的 XML 在 Boot 下显然不是必需的。
我正在尝试从独立的 Spring 引导应用程序连接到 JBoss 7.1.1 中的 HornetQ JMS 服务器 运行。我可以使用如下配置到达服务器并将消息推送到队列:
<bean name="hornetConnectionFactory" class="org.hornetq.jms.client.HornetQXAConnectionFactory">
<constructor-arg name="ha" type="boolean" value="false" />
<constructor-arg>
<bean class="org.hornetq.api.core.TransportConfiguration">
<constructor-arg value="org.hornetq.core.remoting.impl.netty.NettyConnectorFactory" />
<constructor-arg>
<map key-type="java.lang.String" value-type="java.lang.Object">
<entry key="host" value="127.0.0.1" />
<entry key="port" value="5445"></entry>
</map>
</constructor-arg>
</bean>
</constructor-arg>
</bean>
<bean id="defaultDestination" class="org.hornetq.jms.client.HornetQQueue">
<constructor-arg index="0"
value="outgoingMessageQueue"/>
</bean>
<bean id="userCredsConnectionFactory" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
<property name="targetConnectionFactory" ref="hornetConnectionFactory"/>
<property name="username" value="${jms.user}"/>
<property name="password" value="${jms.password}"/>
</bean>
<bean id="jmsConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory" primary="true">
<constructor-arg ref="userCredsConnectionFactory" />
<property name="sessionCacheSize" value="20"/>
</bean>
<bean name="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"
p:connectionFactory-ref="jmsConnectionFactory"
p:defaultDestination-ref="defaultDestination" />
但是 XA 连接不参与我通过 Spring Boot 的 bitronix 支持启用的 JTA 事务。数据库连接正在使用 JTA。我如何 Spring 启动以获取此 JMS 连接以在其事务管理器中登记为 XA 资源?
现在可以使用了。它比我想象的要简单 - 我能够在 application.properties:
spring.hornetq.mode=native
spring.hornetq.host=127.0.0.1
spring.hornetq.port=5445
spring.jta.bitronix.connectionfactory.user=user
spring.jta.bitronix.connectionfactory.password=password
并且 jmsTemplate 自动获取了 XA JmsConnection。所有较早的 XML 在 Boot 下显然不是必需的。