Hi Claus,

Thank you for the link to the great page.
One issue that I've stuck is how to perform JMS redelivery in Camel using
Spring orchestrated transactions.
My spring context is:

    <bean id="camelJmsComponent"
class="org.apache.camel.component.jms.JmsComponent">
        <property name="transacted" value="true"/>
        <property name="transactionManager" ref="jmsTransactionManager"/>
        <property name="concurrentConsumers" value="1"/>
        <property name="connectionFactory" ref="jmsConnectionFactory"/>
    </bean>

    <bean id="jmsTransactionManager"
class="org.springframework.jms.connection.JmsTransactionManager">
        <property name="connectionFactory" ref="jmsConnectionFactory"/>
    </bean>

    <bean id="jmsConnectionFactory"
class="org.apache.activemq.pool.PooledConnectionFactory">
        <property name="connectionFactory" ref="amqConnectionFactory"/>
    </bean>

    <bean id="amqConnectionFactory"
class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value="tcp://localhost:3303"/>
        <property name="redeliveryPolicy" ref="amqRedeliveryPolicy"/>
    </bean>

    <bean id="amqRedeliveryPolicy"
class="org.apache.activemq.RedeliveryPolicy">
        <property name="useExponentialBackOff" value="true"/>
        <property name="backOffMultiplier" value="2"/>
        <property name="initialRedeliveryDelay" value="1000"/>
        <property name="maximumRedeliveries" value="5"/>
    </bean>

    <bean id="PROPAGATION_REQUIRED"
          class="org.apache.camel.spring.spi.SpringTransactionPolicy">
        <property name="transactionManager" ref="jmsTransactionManager"/>
    </bean>

    <bean id="illegalArgumentException"
class="java.lang.IllegalArgumentException"/>

    <bean id="handlerBean" class="com.playtech.ums.tests.JmsHandlerBean"/>

    <camel:camelContext>

        <camel:route>
            <camel:from uri="jms:queue:test.lab.queue"/>
            <camel:transacted ref="PROPAGATION_REQUIRED"/>
            <camel:log message="Redelivered: ${header.JMSRedelivered}"/>
            <camel:choice>
                <camel:when>
                    <camel:simple>${in.body} contains
'exception'</camel:simple>
                    <camel:log message="Incoming message contains
'exception': ${in.body}" loggingLevel="WARN"/>
                    <camel:throwException ref="illegalArgumentException"/>
                </camel:when>
            </camel:choice>
            <camel:to uri="handlerBean"/>
        </camel:route>

    </camel:camelContext>

When I executed this code I've got message "Exhausted after delivery
attempt: 1" instead of "exponential back off" redelivery.
Could you please help?

Thanks.
--Victor



--
View this message in context: 
http://camel.465427.n5.nabble.com/JMS-transaction-behavior-inside-of-route-tp5730513p5731566.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to