HornetQ XA не участвует в транзакции Bitronix с Spring Boot

Я пытаюсь подключиться к JMS-серверу HornetQ, работающему в JBoss 7.1.1, из автономного приложения Spring Boot. Я могу добраться до сервера и отправить сообщения в очередь с такой конфигурацией:

<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 не участвует в транзакции JTA, которую я включил с помощью поддержки bitronix в Spring Boot. Соединение с базой данных использует JTA. Как заставить Spring Boot получить это соединение JMS для регистрации в качестве ресурса XA в своем диспетчере транзакций?


person samyem    schedule 02.04.2015    source источник


Ответы (1)


Получил это, чтобы работать теперь. Это было проще, чем я думал — я смог заставить Spring Boot подключиться к JBoss HornetQ с помощью этого в 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.

person samyem    schedule 04.04.2015