Hi,

I have configured Spring DefaultMessageListenerContainer to work with the
Jboss TX manager in XA mode and with a queue destination it works fine, when
throwing a RuntimeException in the listener the message is rolled back and
redelivered 5 times before beeing sent to the DLQ.

But when I try to do the same with a durable topic destination the message
is rolledback and redelivered forever thus never sent to the DLQ.

Does anyone have an idea of what I do wrong?


I use Jboss EAP 6.4.6 just for the TX, ActiveMQ 5.13.2 out of the box,
Spring 4.2.5

This is the config for a queue that works:

<beans xmlns="http://www.springframework.org/schema/beans";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
        xmlns:p="http://www.springframework.org/schema/p";
        xmlns:context="http://www.springframework.org/schema/context";
        xmlns:jms="http://www.springframework.org/schema/jms"; 
        xmlns:tx="http://www.springframework.org/schema/tx"; 
        xsi:schemaLocation="http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee.xsd
                http://www.springframework.org/schema/jms
http://www.springframework.org/schema/jms/spring-jms.xsd
                http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
                http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
                http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd";>

        <tx:jta-transaction-manager/>

        <jms:listener-container concurrency="1"
                destination-type="queue"
                connection-factory="amqXaPoolConnectionFactory"
                transaction-manager="transactionManager">
                <jms:listener destination="testQueue" ref="testListener" 
method="execute"
/>
        </jms:listener-container>

        <bean id="testListener" class="tx.TestListener"/>

        <bean id="jtaTransactionManager" factory-bean="transactionManager"
factory-method="getTransactionManager"/>

        <bean id="amqXaPoolConnectionFactory"
class="org.apache.activemq.pool.XaPooledConnectionFactory"
                p:maxConnections="10"
                p:connectionFactory-ref="amqXAConnectionFactory"
                p:transactionManager-ref="jtaTransactionManager"/>

        <bean id="amqXAConnectionFactory"
class="org.apache.activemq.ActiveMQXAConnectionFactory"
        
p:brokerURL="failover://(tcp://localhost:61616)?jms.prefetchPolicy.all=1&amp;timeout=5000"/>

</beans>


This is the config for a durable topic that dosen't work:


<beans xmlns="http://www.springframework.org/schema/beans";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
        xmlns:p="http://www.springframework.org/schema/p";
        xmlns:context="http://www.springframework.org/schema/context";
        xmlns:jms="http://www.springframework.org/schema/jms"; 
        xmlns:tx="http://www.springframework.org/schema/tx"; 
        xsi:schemaLocation="http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee.xsd
                http://www.springframework.org/schema/jms
http://www.springframework.org/schema/jms/spring-jms.xsd
                http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
                http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
                http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd";>

        <tx:jta-transaction-manager />

        <jms:listener-container concurrency="1"
                destination-type="durableTopic" 
                connection-factory="amqXaPoolConnectionFactory"
                transaction-manager="transactionManager">
                <jms:listener destination="testTopic" ref="testListener" 
method="execute"
/>
        </jms:listener-container>

        <bean id="testListener" class="tx.TestListener" />

        <bean id="jtaTransactionManager" factory-bean="transactionManager"
                factory-method="getTransactionManager" />

        <bean id="amqXaPoolConnectionFactory"
class="org.apache.activemq.pool.XaPooledConnectionFactory"
                p:maxConnections="1" 
                p:connectionFactory-ref="amqXAConnectionFactory"
                p:transactionManager-ref="jtaTransactionManager" />

        <bean id="amqXAConnectionFactory"
class="org.apache.activemq.ActiveMQXAConnectionFactory"
        
p:brokerURL="failover://(tcp://localhost:61616)?jms.prefetchPolicy.all=1&amp;timeout=5000"
                p:clientID="test"/>

</beans>





--
View this message in context: 
http://activemq.2283324.n4.nabble.com/JTA-with-durable-topic-tp4711549.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to