【问题标题】:HornetQ XA not participating in bitronix transaction with Spring BootHornetQ XA 未通过 Spring Boot 参与 bitronix 事务
【发布时间】:2015-06-07 23:21:36
【问题描述】:

我正在尝试从独立的 Spring Boot 应用程序连接到在 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 Boot 让这个 JMS 连接在其事务管理器中登记为 XA 资源?

【问题讨论】:

    标签: jboss7.x spring-boot hornetq spring-jms bitronix


    【解决方案1】:

    现在可以使用了。它比我想象的要简单——我可以在 application.properties 中让 Spring Boot 连接到 JBoss 的 HornetQ:

    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。 Boot 下显然不需要所有早期的 XML。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-19
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      相关资源
      最近更新 更多