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/
>

Reply via email to