Thanks for the addition configuration and logs.

Are you getting a message history in the logs that identifies exactly where the 
failure occurs?

Without the message history, I’m guessing a little - but it appears the failure 
is in the CRM_LoginRoute on the inOut call to the jetty URI.

I put together a simple sample, and it seems to be working for me.  I stripped 
out all the external dependencies so I could focus on the logic.  When I run 
the test for this, with a good and a bad message, I can see the retry of the 
bad message (the sub-route gets called three times in this case.  So I can’t 
seem to reproduce the issue you’re having.

Here’s what I came up with - other than the external dependencies, can you see 
any differences?  I tested this against 2.15.5 and 2.16.2 (but the enrich DSL 
changes slightly for 2.16.2).

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans";
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
       xmlns:camel="http://camel.apache.org/schema/spring";
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd
       http://camel.apache.org/schema/spring 
http://camel.apache.org/schema/spring/camel-spring.xsd";>

    <bean id="enrich-strategy" 
class="com.pronoia.camel.processor.aggregate.EnrichStrategy" />
    <bean id="sub-route-processor" 
class="com.pronoia.camel.processor.SubRouteProcessor"/>

    <camel:errorHandler id="no-error-handler" type="NoErrorHandler"/>

    <camel:errorHandler id="dlq-error-handler" type="DeadLetterChannel"
                        deadLetterUri="mock://failure">
        <camel:redeliveryPolicy
                maximumRedeliveries="3"
                redeliveryDelay="5000"
                allowRedeliveryWhileStopping="false"
                retryAttemptedLogLevel="WARN"
                />
    </camel:errorHandler>

    <camelContext xmlns="http://camel.apache.org/schema/spring";>
        <route id="sub-route" errorHandlerRef="no-error-handler">
            <from uri="direct://sub-route"/>
            <log message="${routeId} - starting" />
                <process ref="sub-route-processor" />
                <log message="${routeId} - complete" />
        </route>

        <route id="main-route" errorHandlerRef="dlq-error-handler">

            <from uri="direct://source"/>
                <log message="${routeId} - starting" />

                <enrich uri="direct://sub-route" strategyRef="enrich-strategy" 
aggregateOnException="false"/>

                <log message="${routeId} complete" />
                <to uri="mock://complete" />
        </route>
    </camelContext>

</beans>




> On Jan 29, 2016, at 9:07 AM, Michele <michele.mazzi...@finconsgroup.com> 
> wrote:
> 
> CRMRedeliveryPolicy

Reply via email to