That;s what I thought, hence my spring config :
<bean id="redeliveryPolicyDelivery" class="org.apache.activemq.
RedeliveryPolicy">
* <property name="maximumRedeliveries" value="100"/>*
<property name="useExponentialBackOff" value="true"/>
<property name="backOffMultiplier" value="10"/>
<property name="initialRedeliveryDelay" value="10000"/>
</bean>
but it doesnt appear to have any effect.
On Wed, Feb 16, 2011 at 2:19 PM, Claus Ibsen <[email protected]> wrote:
> Hi
>
> Since you use ActiveMQ then when you use transacted, then you let
> ActiveMQ handle redelivery according to its redelivery policy
> settings.
> And those are 6 times and if still fail move message to the DLQ
> http://activemq.apache.org/redelivery-policy.html
>
> So that could explain why you see that behavior. You can configure AMQ
> to your needs in terms of redelivery. And where to move the message if
> exhausted.
>
>
>
> On Wed, Feb 16, 2011 at 1:58 PM, Tom Howe <[email protected]> wrote:
> > Hi, I'm new to Camel and I am trying to create a simple app that consumes
> > messages from an ActiveMQ queue and forwards them to a TCP port (splunk).
> If
> > the TCP connection is down I want the message left on the queue and
> retried
> > with expontential backoff.
> >
> > I've been trying to understand the TransactionClient page but I find that
> > whatever I try, if I raise an exception or I give it an invalid
> destination,
> > camel retries to send 5 times and then then gives up and removes the
> message
> > from the queue.
> >
> > I have a simple app that creates a SpringCamelContext as follows:
> >
> > ApplicationContext applicationContext = new
> > ClassPathXmlApplicationContext("appContext.xml");
> >
> > SpringCamelContext context = new
> > SpringCamelContext(applicationContext);
> >
> > and adds a Route:
> >
> > context.addRoutes(new MyRoute());
> > context.start();
> >
> >
> > The route looks like this..
> >
> > class MyRoute extends SpringRouteBuilder {
> >
> > @Override
> > public void configure() throws Exception {
> > // errorHandler(deadLetterChannel("activemq:error"));
> >
> > SpringTransactionPolicy required = lookup("PROPAGATION_REQUIRED",
> > SpringTransactionPolicy.class);
> >
> > errorHandler(
> > transactionErrorHandler(required)
> > .backOffMultiplier(5)
> > .maximumRedeliveries(100)
> > .useExponentialBackOff()
> > );
> >
> > from("activemq-tom:queue:ispy?transacted=true")
> > .transacted("PROPAGATION_REQUIRED")
> > .policy(required)
> > .process(new Processor() {
> >
> > @Override
> > public void process(Exchange exchange) throws
> Exception
> > {
> > Message in = exchange.getIn();
> > log.info("Message in: " + in);
> > throw new Exception("blah");
> > }
> > })
> > .to("mina:tcp://localhost:9999");
> > }
> > }
> >
> >
> > My spring context contains:
> >
> >
> > <bean id="activemq-tom"
> > class="org.apache.activemq.camel.component.ActiveMQComponent">
> > <property name="transacted" value="true"/>
> > <property name="configuration" ref="myConfigDelivery"/>
> > </bean>
> >
> >
> > <bean id="myConfigDelivery"
> > class="org.apache.camel.component.jms.JmsConfiguration">
> > <property name="connectionFactory"
> > ref="jmsCachingConnectionFactoryDelivery"/>
> > <property name="transactionManager"
> > ref="jmsTransactionManagerDelivery"/>
> > <property name="concurrentConsumers" value="1"/>
> > <property name="maxConcurrentConsumers" value="1"/>
> > <property name="transacted" value="true"/>
> > </bean>
> >
> > <bean id="jmsTransactionManagerDelivery"
> > class="org.springframework.jms.connection.JmsTransactionManager">
> > <property name="connectionFactory"
> > ref="jmsCachingConnectionFactoryDelivery"/>
> > </bean>
> >
> >
> > <bean id="jmsCachingConnectionFactoryDelivery"
> > class="org.springframework.jms.connection.SingleConnectionFactory">
> > <property name="targetConnectionFactory"
> > ref="jmsConnectionFactoryDelivery"/>
> > </bean>
> >
> > <bean id="jmsConnectionFactoryDelivery"
> > class="org.apache.activemq.ActiveMQConnectionFactory">
> > <property name="brokerURL" value="tcp://localhost:61616"/>
> > <!--<property name="redeliveryPolicy"
> > ref="redeliveryPolicyDelivery"/>-->
> > </bean>
> >
> > <bean id="redeliveryPolicyDelivery"
> > class="org.apache.activemq.RedeliveryPolicy">
> > <property name="maximumRedeliveries" value="100"/>
> > <property name="useExponentialBackOff" value="true"/>
> > <property name="backOffMultiplier" value="10"/>
> > <property name="initialRedeliveryDelay" value="10000"/>
> > </bean>
> >
> > <!-- policy for required transaction used in our Camel routes -->
> > <bean id="PROPAGATION_REQUIRED"
> > class="org.apache.camel.spring.spi.SpringTransactionPolicy">
> > <property name="transactionManager"
> > ref="jmsTransactionManagerDelivery"/>
> > <property name="propagationBehaviorName"
> > value="PROPAGATION_REQUIRED"/>
> > </bean>
> >
> >
> > I'm using the following dependencies:
> >
> > <dependency>
> > <groupId>org.springframework</groupId>
> > <artifactId>spring-core</artifactId>
> > <version>${org.springframework.version}</version>
> > <exclusions>
> > <exclusion>
> > <groupId>commons-logging</groupId>
> > <artifactId>commons-logging</artifactId>
> > </exclusion>
> > </exclusions>
> > </dependency>
> >
> > <dependency>
> > <groupId>org.springframework</groupId>
> > <artifactId>spring-context</artifactId>
> > <version>${org.springframework.version}</version>
> > </dependency>
> >
> > <dependency>
> > <groupId>org.springframework</groupId>
> > <artifactId>spring-context-support</artifactId>
> > <version>${org.springframework.version}</version>
> > </dependency>
> >
> > <dependency>
> > <groupId>org.springframework</groupId>
> > <artifactId>spring-tx</artifactId>
> > <version>${org.springframework.version}</version>
> > </dependency>
> >
> > <dependency>
> > <groupId>commons-lang</groupId>
> > <artifactId>commons-lang</artifactId>
> > <version>2.5</version>
> > </dependency>
> >
> > <dependency>
> > <groupId>org.apache.camel</groupId>
> > <artifactId>camel-spring</artifactId>
> > <version>2.5.0</version>
> > </dependency>
> >
> > <dependency>
> > <groupId>org.apache.camel</groupId>
> > <artifactId>camel-core</artifactId>
> > <version>2.5.0</version>
> > </dependency>
> >
> >
> > <dependency>
> > <groupId>org.apache.camel</groupId>
> > <artifactId>camel-jms</artifactId>
> > <version>2.5.0</version>
> > </dependency>
> >
> > <dependency>
> > <groupId>org.apache.camel</groupId>
> > <artifactId>camel-http</artifactId>
> > <version>2.5.0</version>
> > </dependency>
> >
> > <dependency>
> > <groupId>org.apache.camel</groupId>
> > <artifactId>camel-restlet</artifactId>
> > <version>2.5.0</version>
> > </dependency>
> >
> > <dependency>
> > <groupId>org.apache.camel</groupId>
> > <artifactId>camel-mina</artifactId>
> > <version>2.5.0</version>
> > </dependency>
> >
> >
> > <dependency>
> > <groupId>org.apache.activemq</groupId>
> > <artifactId>activemq-core</artifactId>
> > <version>5.2.0</version>
> > </dependency>
> >
> > <dependency>
> > <groupId>org.apache.activemq</groupId>
> > <artifactId>activemq-camel</artifactId>
> > <version>5.2.0</version>
> > </dependency>
> >
> >
> > Any help appreciated.
> >
> > Many thanks, Tom
> >
>
>
>
> --
> Claus Ibsen
> -----------------
> FuseSource
> Email: [email protected]
> Web: http://fusesource.com
> Twitter: davsclaus
> Blog: http://davsclaus.blogspot.com/
> Author of Camel in Action: http://www.manning.com/ibsen/
>