Hi All, I tried hard to get the redelivery working when route is transacted. But so far no luck with redelivery at all. I am using camel-1.5.0 in servicemix 3.2.2.
This is how my camel-context.xml looks like: <camelContext id="camel" useJmx="false" xmlns="http://activemq.apache.org/camel/schema/spring"> <route errorHandlerRef="transactionErrorHandler"> <route> <from uri="activemq:topic:StatelessTransactions"/> <policy ref="required" /> <bean ref="RouteBuilder" method="throwRetryException" /> </route> </camelContext> <bean id="jms" class="org.apache.camel.component.jms.JmsComponent"> <property name="connectionFactory" ref="jmsConnectionFactory"> </property> <!-- define the jms consumer/producer as transacted --> <property name="transacted" value="true"/> <property name="transactionManager" ref="jmsTransactionManager"/> </bean> <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent"> <property name="brokerURL" value="vm://localhost?create=false" /> </bean> <bean id="RouteBuilder" class="com.RouteBuilder"/> <bean id="jmsTransactionManager" class="org.springframework.jms.connection.JmsTransactionManager"> <property name="connectionFactory" ref="jmsConnectionFactory" /> </bean> <bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="vm://localhost?broker.persistent=false&broker.useJmx=false"/> <property name="redeliveryPolicy" ref="redeliveryPolicy" /> </bean> <bean id="required" class="org.apache.camel.spring.spi.SpringTransactionPolicy"> <property name="transactionManager" ref="jmsTransactionManager"/> </bean> <bean id="redeliveryPolicy" class="org.apache.activemq.RedeliveryPolicy"> <property name="maximumRedeliveries" value="-1"/> </bean> <bean id="PROPAGATION_NOT_SUPPORTED" class="org.springframework.transaction.support.TransactionTemplate"> <property name="transactionManager" ref="jmsTransactionManager" /> <property name="propagationBehaviorName" value="PROPAGATION_NOT_SUPPORTED" /> </bean> <bean id="PROPAGATION_REQUIRES_NEW" class="org.springframework.transaction.support.TransactionTemplate"> <property name="transactionManager" ref="jmsTransactionManager" /> <property name="propagationBehaviorName" value="PROPAGATION_REQUIRES_NEW" /> </bean> <bean id="transactionErrorHandler" class="org.apache.camel.spring.spi.TransactionErrorHandlerBuilder"> <property name="transactionTemplate" ref="PROPAGATION_REQUIRED"/> </bean> Class RouteBuilder{ public void throwRetryException() throws Exception{ throw new Exception(); } }; No matter whatever I do, I never seen camel to trigger the redelivery of messages. I also came across this wiki page : http://camel.apache.org/transactional-client.html and here it says: Configuration of Redelivery The redelivery in transacted mode is not handled by Camel but by the backing system (the transaction manager). In such cases you should resort to the backing system how to configure the redelivery. As far as I understand, the backing system in my configuration is ActiveMQ TransactionManager which I set correctly. If I am wrong please someone correct me here and also give me explanation about backing system. Could anyone please tell me what I am missing here? I struggled a lot but never get this working. I am dying to see this working as soon as I can. Looking forward to see your expert comments. Thanks in advance, Sanjay -- View this message in context: http://www.nabble.com/Redelivery-of-messages-in-transactional-mode-tp23389382p23389382.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.