Hello,

I got an issue with JMS transactions when I try to route a message I'm
consumming to another queue.

When I kill the camel component using "kill -9" or "Ctrl-C", I
sometimes lost messages.

According to Camel/JMS DEBUG logs, it seems that the message is sent
to my second queue with a new transaction instead of using the one
created when receiving the message.

Here is an extract of my spring configuration :

------------------------------------------------------------------------------------
        <bean id="required"
class="org.apache.camel.spring.spi.SpringTransactionPolicy">
                <property name="transactionManager" ref="amqTransactionManager" 
/>
                <property name="propagationBehaviorName" 
value="PROPAGATION_MANDATORY" />
        </bean>
        <bean id="amqTransactionManager" name="amqTransactionManager"
                
class="org.springframework.jms.connection.JmsTransactionManager">
                <property name="connectionFactory" 
ref="amqPoolConnectionFactory" />
        </bean>
        <bean id="amqPoolConnectionFactory"
class="org.jencks.amqpool.PooledConnectionFactory">
                <constructor-arg ref="amqConnectionFactory" />
                <property name="maxConnections" value="10" />
                <property name="maximumActive" value="10" />
        </bean>
        <amq:connectionFactory id="amqConnectionFactory"
brokerURL="${bo.activemq.brokerurl}"
                                warnAboutUnstartedConnectionTimeout="1">
                <property name="redeliveryPolicy" 
ref="transactedRedeliveryPolicy" />
                <property name="transportListener" ref="jmsExceptionListener" />
                <property name="exceptionListener" ref="jmsExceptionListener" />
        </amq:connectionFactory>
        <bean id="transactedRedeliveryPolicy"
class="org.apache.activemq.RedeliveryPolicy">
                <property name="initialRedeliveryDelay" value="1000" />
                <property name="maximumRedeliveries" value="5" />
                <property name="useExponentialBackOff" value="true" />
        </bean>

        <camelContext id="ORDERS" shutdownRunningTask="CompleteCurrentTaskOnly"
                xmlns="http://camel.apache.org/schema/spring";>
                <route id="ActiveMQ_ORDERS_TO_SCHEMA_VALIDATION">
                        <from ref="AMQ_ORDERS" />
                        <transacted ref="required"/>
                        <to ref="AMQ_ORDERS_2" />
                </route>
        </camelContext>
------------------------------------------------------------------------------------

Thanks a lot for any help you can offer !


Regards,

--
Céline

Reply via email to