Since adding JMS transaction support to our camel / activemq routes I've
noticed a lot of "transport interrupted" and "transport resumed" log
messages being outputted from our application. Is this change in behavior to
be expected? Does the JMS connection handling change once a
TransactionManager has been introduced? Are the ActiveMQ connections or
sessions dropped and reopened periodically, or after a period of inactivity?
The application itself appears to work fine; the JMS messages are still
processed successfully and when a transaction is rolled back then the
message isn't lost. However we have a monitoring system monitoring the
application's log files, in particular for any connection errors between the
application and the activemq broker. This leads to a lot of alarms being
raised.
Im using Camel Version: 2.10.0, ActiveMQ: 5.5.1 and Spring: 3.1.0
Thanks in advance for any help.
Below is the spring / activemq configuration we're using:
<bean id="activemqtx"
class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="configuration" ref="txJmsConfiguration"/>
<property name="transactionManager" ref="jmsTransactionManager"/>
</bean>
<bean id="activemq"
class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="configuration" ref="ntxJmsConfiguration"/>
</bean>
<bean id="amqPooledConnectionFactory"
class="org.apache.activemq.pool.PooledConnectionFactory"
destroy-method="stop">
<property name="maxConnections" value="5"/>
<property name="connectionFactory" ref="amqConnectionFactory"/>
</bean>
<bean id="amqConnectionFactory"
class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="${activemq.brokerURL}"/>
<property name="userName" value="${activemq.username}"/>
<property name="password" value="${activemq.password}"/>
<property name="exceptionListener" ref="jmsExceptionListener"/>
<property name="transportListener" ref="jmsTransportListener"/>
<property name="redeliveryPolicy" ref="redeliveryPolicy"/>
</bean>
<bean id="jmsExceptionListener" class="..JmsExceptionListener"/>
<bean id="jmsTransportListener" class=".JmsTransportListener"/>
<bean id="redeliveryPolicy" class="org.apache.activemq.RedeliveryPolicy">
<property name="backOffMultiplier" value="2"/>
<property name="collisionAvoidancePercent" value="15"/>
<property name="initialRedeliveryDelay" value="5000"/>
<property name="maximumRedeliveries" value="2"/>
<property name="useCollisionAvoidance" value="false"/>
<property name="maximumRedeliveryDelay" value="5000"/>
<property name="redeliveryDelay" value="5000"/>
<property name="useExponentialBackOff" value="false"/>
</bean>
<bean id="abstractJmsConfiguration" abstract="true"
class="org.apache.camel.component.jms.JmsConfiguration">
<property name="connectionFactory" ref="amqPooledConnectionFactory"/>
<property name="exceptionListener" ref="jmsExceptionListener"/>
</bean>
<bean id="txJmsConfiguration" parent="abstractJmsConfiguration"
class="org.apache.camel.component.jms.JmsConfiguration">
<property name="transacted" value="true"/>
<property name="cacheLevelName" value="CACHE_CONSUMER"/>
<property name="transactionTimeout" value="60000"/>
</bean>
<bean id="ntxJmsConfiguration" parent="abstractJmsConfiguration"
class="org.apache.camel.component.jms.JmsConfiguration">
<property name="transacted" value="false"/>
</bean>
<bean id="jmsTransactionManager"
class="org.springframework.jms.connection.JmsTransactionManager">
<property name="connectionFactory" ref="amqPooledConnectionFactory"/>
</bean>
<bean id="PROPAGATION_REQUIRED"
class="org.apache.camel.spring.spi.SpringTransactionPolicy">
<property name="transactionManager" ref="jmsTransactionManager"/>
</bean>
<bean id="PROPAGATION_REQUIRES_NEW"
class="org.apache.camel.spring.spi.SpringTransactionPolicy">
<property name="transactionManager" ref="jmsTransactionManager"/>
<property name="propagationBehaviorName"
value="PROPAGATION_REQUIRES_NEW"/>
</bean>
<bean id="jmsTransaction"
class="org.apache.camel.spring.spi.SpringTransactionPolicy">
<property name="transactionTemplate" ref="jmsTransactionTemplate"/>
</bean>
<bean id="jmsTransactionTemplate"
class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager" ref="jmsTransactionManager"/>
<property name="timeout" value="60"/>
</bean>
--
View this message in context:
http://camel.465427.n5.nabble.com/JMS-Transactions-with-ActiveMQ-tp5717528.html
Sent from the Camel - Users mailing list archive at Nabble.com.