Hmm - ok I just realised that somewhere along the way I commented out the
line:

  <property name="redeliveryPolicy" ref="redeliveryPolicyDelivery"/>

Now, I put it back it seems to be having the correct effect!

Sorry for wasting your time.

Tom


On Wed, Feb 16, 2011 at 2:31 PM, Tom Howe <[email protected]> wrote:

> 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