You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Miguel Ruiz Velasco Sobrino <mi...@fcm.com.mx> on 2012/07/17 02:17:29 UTC

Question about loadbalancing failover

Hello,

I'm fairly new to camel, and I have a problem.
I already have a camel configuration with loadbalancing and failover, 
and it works wonders when at least one of the processors succeeds.
I have an scenario maybe all processors fail, and camel loops infinitely 
doing the failover.
I need to know when all failover attempts failed to send an error 
message to the service's clients, because I don't want it to rollback 
and to loop forever.
I think I may need to catch somewhere an exception... but which exception?

My [simplified] test config is as follows:

<camel:camelContext id="camelContext" >
<camel:errorHandler id="miguelErrorHandler"
                 type="DefaultErrorHandler"
                 redeliveryPolicyRef="generalRedeliveryPolicy"
                 useOriginalMessage="false"
 >

</camel:errorHandler>

<camel:redeliveryPolicyProfile id="generalRedeliveryPolicy" 
redeliveryDelay="200" maximumRedeliveries="1" />
<camel:redeliveryPolicyProfile id="redeliveryPolicy" 
redeliveryDelay="500" maximumRedeliveries="1"/>

<camel:route errorHandlerRef="miguelErrorHandler">
<camel:from uri="file:data/inbox" />

<camel:onException redeliveryPolicyRef="redeliveryPolicy" >
<camel:exception>java.lang.NoSuchMethodException</camel:exception>
<camel:handled><camel:constant>true</camel:constant></camel:handled>
<camel:to uri="seda:err"/>
</camel:onException>

<camel:loadBalance inheritErrorHandler="true" >
<camel:failover maximumFailoverAttempts="2" roundRobin="true"/>
<camel:process ref="failProcessor1"></camel:process>
<camel:process ref="failProcessor2"></camel:process>
</camel:loadBalance>

<camel:wireTap uri="stream:out" processorRef="downloadLogger"/> <!-- 
processorRef="downloadLogger" -->
<camel:to   uri="file:data/output" />
</camel:route>

</camel:camelContext>
<bean id="failProcessor1"  class="com.fcm.camel.test.FailProcessor"/>


The class FailProcessor only returns an exception to force the failover.

The log is as follows:

2012-07-16 19:05:15,505 [Camel (camelContext) thread #1 - 
file://data/inbox] TRACE 
org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  - Failover 
starting with endpoint index 0
2012-07-16 19:05:15,507 [Camel (camelContext) thread #1 - 
file://data/inbox] DEBUG 
org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  - 
Processing failover at attempt 0 for Exchange[null]
2012-07-16 19:05:20,383 [Camel (camelContext) thread #1 - 
file://data/inbox] ERROR com.fcm.camel.test.FailedConnectProcessor  - 
failedConnectProcessor Falla intencional al conectar: Mensaje 1

2012-07-16 19:05:20,593 [Camel (camelContext) thread #1 - 
file://data/inbox] ERROR com.fcm.camel.test.FailedConnectProcessor  - 
failedConnectProcessor Falla intencional al conectar: Mensaje 1

2012-07-16 19:05:20,595 [Camel (camelContext) thread #1 - 
file://data/inbox] ERROR org.apache.camel.processor.DefaultErrorHandler  
- Failed delivery for (MessageId: ID-miguel-thnk-58270-1342483504051-0-4 
on ExchangeId: ID-miguel-thnk-58270-1342483504051-0-2). Exhausted after 
delivery attempt: 2 caught: java.net.ConnectException: Falla intencional 
al conectar Ex: failedConnectProcessor
java.net.ConnectException: Falla intencional al conectar Ex: 
failedConnectProcessor
     at 
com.fcm.camel.test.FailedConnectProcessor.process(FailedConnectProcessor.java:26)
     at 
org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:330)
     at 
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220)
     at 
org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:303)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.loadbalancer.FailOverLoadBalancer.processExchange(FailOverLoadBalancer.java:247)
     at 
org.apache.camel.processor.loadbalancer.FailOverLoadBalancer.process(FailOverLoadBalancer.java:205)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:330)
     at 
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220)
     at 
org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:303)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at org.apache.camel.processor.Pipeline.process(Pipeline.java:117)
     at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
     at 
org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150)
     at 
org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117)
     at 
org.apache.camel.processor.RouteInflightRepositoryProcessor.processNext(RouteInflightRepositoryProcessor.java:48)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73)
     at 
org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:336)
     at 
org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:189)
     at 
org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:155)
     at 
org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:139)
     at 
org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:91)
     at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
     at java.util.concurrent.FutureTask$Sync.innerRunAndReset(Unknown 
Source)
     at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
     at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(Unknown 
Source)
     at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(Unknown 
Source)
     at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown 
Source)
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown 
Source)
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
     at java.lang.Thread.run(Unknown Source)
2012-07-16 19:05:20,596 [Camel (camelContext) thread #1 - 
file://data/inbox] TRACE 
org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  - 
Processing exchangeId: ID-miguel-thnk-58270-1342483504051-0-2 is 
continued being processed synchronously
2012-07-16 19:05:20,596 [Camel (camelContext) thread #1 - 
file://data/inbox] TRACE 
org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  - Should 
failover: true for exchangeId: ID-miguel-thnk-58270-1342483504051-0-2
2012-07-16 19:05:20,597 [Camel (camelContext) thread #1 - 
file://data/inbox] DEBUG 
org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  - 
Processing failover at attempt 1 for Exchange[null]
2012-07-16 19:05:20,597 [Camel (camelContext) thread #1 - 
file://data/inbox] ERROR com.fcm.camel.test.FailedConnectProcessor  - 
failedConnectProcessor Falla intencional al conectar: Mensaje 1

2012-07-16 19:05:20,799 [Camel (camelContext) thread #1 - 
file://data/inbox] ERROR com.fcm.camel.test.FailedConnectProcessor  - 
failedConnectProcessor Falla intencional al conectar: Mensaje 1

2012-07-16 19:05:20,800 [Camel (camelContext) thread #1 - 
file://data/inbox] ERROR org.apache.camel.processor.DefaultErrorHandler  
- Failed delivery for (MessageId: ID-miguel-thnk-58270-1342483504051-0-6 
on ExchangeId: ID-miguel-thnk-58270-1342483504051-0-2). Exhausted after 
delivery attempt: 2 caught: java.net.ConnectException: Falla intencional 
al conectar Ex: failedConnectProcessor
java.net.ConnectException: Falla intencional al conectar Ex: 
failedConnectProcessor
     at 
com.fcm.camel.test.FailedConnectProcessor.process(FailedConnectProcessor.java:26)
     at 
org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:330)
     at 
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220)
     at 
org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:303)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.loadbalancer.FailOverLoadBalancer.processExchange(FailOverLoadBalancer.java:247)
     at 
org.apache.camel.processor.loadbalancer.FailOverLoadBalancer.process(FailOverLoadBalancer.java:205)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:330)
     at 
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220)
     at 
org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:303)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at org.apache.camel.processor.Pipeline.process(Pipeline.java:117)
     at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
     at 
org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150)
     at 
org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117)
     at 
org.apache.camel.processor.RouteInflightRepositoryProcessor.processNext(RouteInflightRepositoryProcessor.java:48)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73)
     at 
org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:336)
     at 
org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:189)
     at 
org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:155)
     at 
org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:139)
     at 
org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:91)
     at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
     at java.util.concurrent.FutureTask$Sync.innerRunAndReset(Unknown 
Source)
     at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
     at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(Unknown 
Source)
     at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(Unknown 
Source)
     at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown 
Source)
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown 
Source)
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
     at java.lang.Thread.run(Unknown Source)
2012-07-16 19:05:20,802 [Camel (camelContext) thread #1 - 
file://data/inbox] TRACE 
org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  - 
Processing exchangeId: ID-miguel-thnk-58270-1342483504051-0-2 is 
continued being processed synchronously
2012-07-16 19:05:20,802 [Camel (camelContext) thread #1 - 
file://data/inbox] TRACE 
org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  - Should 
failover: true for exchangeId: ID-miguel-thnk-58270-1342483504051-0-2
2012-07-16 19:05:20,802 [Camel (camelContext) thread #1 - 
file://data/inbox] DEBUG 
org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  - 
Processing failover at attempt 2 for Exchange[null]
2012-07-16 19:05:20,804 [Camel (camelContext) thread #1 - 
file://data/inbox] ERROR com.fcm.camel.test.FailProcessor  - 
failProcessor1 falla: Mensaje 1

2012-07-16 19:05:21,013 [Camel (camelContext) thread #1 - 
file://data/inbox] ERROR com.fcm.camel.test.FailProcessor  - 
failProcessor1 falla: Mensaje 1

2012-07-16 19:05:21,015 [Camel (camelContext) thread #1 - 
file://data/inbox] ERROR org.apache.camel.processor.DefaultErrorHandler  
- Failed delivery for (MessageId: ID-miguel-thnk-58270-1342483504051-0-8 
on ExchangeId: ID-miguel-thnk-58270-1342483504051-0-2). Exhausted after 
delivery attempt: 2 caught: java.lang.NoSuchMethodException: Falla 
intencional failProcessor1
java.lang.NoSuchMethodException: Falla intencional failProcessor1
     at com.fcm.camel.test.FailProcessor.process(FailProcessor.java:24)
     at 
org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:330)
     at 
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220)
     at 
org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:303)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.loadbalancer.FailOverLoadBalancer.processExchange(FailOverLoadBalancer.java:247)
     at 
org.apache.camel.processor.loadbalancer.FailOverLoadBalancer.process(FailOverLoadBalancer.java:205)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:330)
     at 
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220)
     at 
org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:303)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at org.apache.camel.processor.Pipeline.process(Pipeline.java:117)
     at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
     at 
org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150)
     at 
org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117)
     at 
org.apache.camel.processor.RouteInflightRepositoryProcessor.processNext(RouteInflightRepositoryProcessor.java:48)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
     at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
     at 
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73)
     at 
org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:336)
     at 
org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:189)
     at 
org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:155)
     at 
org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:139)
     at 
org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:91)
     at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
     at java.util.concurrent.FutureTask$Sync.innerRunAndReset(Unknown 
Source)
     at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
     at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(Unknown 
Source)
     at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(Unknown 
Source)
     at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown 
Source)
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown 
Source)
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
     at java.lang.Thread.run(Unknown Source)
2012-07-16 19:05:21,016 [Camel (camelContext) thread #1 - 
file://data/inbox] TRACE 
org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  - 
Processing exchangeId: ID-miguel-thnk-58270-1342483504051-0-2 is 
continued being processed synchronously
2012-07-16 19:05:21,016 [Camel (camelContext) thread #1 - 
file://data/inbox] TRACE 
org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  - Should 
failover: true for exchangeId: ID-miguel-thnk-58270-1342483504051-0-2
2012-07-16 19:05:21,016 [Camel (camelContext) thread #1 - 
file://data/inbox] DEBUG 
org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  - 
*Breaking out of failover after 3 failover attempts*
2012-07-16 19:05:33,362 [Camel (camelContext) thread #1 - 
file://data/inbox] DEBUG 
org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  - 
*Failover complete for exchangeId*: 
ID-miguel-thnk-58270-1342483504051-0-2 >>> Exchange[null]
2012-07-16 19:05:57,457 [Camel (camelContext) thread #1 - 
file://data/inbox] WARN 
*org.apache.camel.component.file.GenericFileOnCompletion  - Rollback 
file strategy: 
org.apache.camel.component.file.strategy.GenericFileRenameProcessStrategy*@43036651 
for file: GenericFile[content]


Thanks

-- 
Miguel Ruiz Velasco Sobrino
FCM Computacion Mexicana SAPI de CV


Re: Question about loadbalancing failover

Posted by Claus Ibsen <cl...@gmail.com>.
On Tue, Jul 17, 2012 at 2:17 AM, Miguel Ruiz Velasco Sobrino
<mi...@fcm.com.mx> wrote:
> Hello,
>
> I'm fairly new to camel, and I have a problem.
> I already have a camel configuration with loadbalancing and failover, and it
> works wonders when at least one of the processors succeeds.
> I have an scenario maybe all processors fail, and camel loops infinitely
> doing the failover.
> I need to know when all failover attempts failed to send an error message to
> the service's clients, because I don't want it to rollback and to loop
> forever.
> I think I may need to catch somewhere an exception... but which exception?
>

Whatever exception causes the problem in the failover, is being
rethrown when all attempts failed from the failover.





> My [simplified] test config is as follows:
>
> <camel:camelContext id="camelContext" >
> <camel:errorHandler id="miguelErrorHandler"
>                 type="DefaultErrorHandler"
>                 redeliveryPolicyRef="generalRedeliveryPolicy"
>                 useOriginalMessage="false"
>>
>
> </camel:errorHandler>
>
> <camel:redeliveryPolicyProfile id="generalRedeliveryPolicy"
> redeliveryDelay="200" maximumRedeliveries="1" />
> <camel:redeliveryPolicyProfile id="redeliveryPolicy" redeliveryDelay="500"
> maximumRedeliveries="1"/>
>
> <camel:route errorHandlerRef="miguelErrorHandler">
> <camel:from uri="file:data/inbox" />
>
> <camel:onException redeliveryPolicyRef="redeliveryPolicy" >
> <camel:exception>java.lang.NoSuchMethodException</camel:exception>
> <camel:handled><camel:constant>true</camel:constant></camel:handled>
> <camel:to uri="seda:err"/>
> </camel:onException>
>
> <camel:loadBalance inheritErrorHandler="true" >
> <camel:failover maximumFailoverAttempts="2" roundRobin="true"/>
> <camel:process ref="failProcessor1"></camel:process>
> <camel:process ref="failProcessor2"></camel:process>
> </camel:loadBalance>
>
> <camel:wireTap uri="stream:out" processorRef="downloadLogger"/> <!--
> processorRef="downloadLogger" -->
> <camel:to   uri="file:data/output" />
> </camel:route>
>
> </camel:camelContext>
> <bean id="failProcessor1"  class="com.fcm.camel.test.FailProcessor"/>
>
>
> The class FailProcessor only returns an exception to force the failover.
>
> The log is as follows:
>
> 2012-07-16 19:05:15,505 [Camel (camelContext) thread #1 - file://data/inbox]
> TRACE org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  -
> Failover starting with endpoint index 0
> 2012-07-16 19:05:15,507 [Camel (camelContext) thread #1 - file://data/inbox]
> DEBUG org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  -
> Processing failover at attempt 0 for Exchange[null]
> 2012-07-16 19:05:20,383 [Camel (camelContext) thread #1 - file://data/inbox]
> ERROR com.fcm.camel.test.FailedConnectProcessor  - failedConnectProcessor
> Falla intencional al conectar: Mensaje 1
>
> 2012-07-16 19:05:20,593 [Camel (camelContext) thread #1 - file://data/inbox]
> ERROR com.fcm.camel.test.FailedConnectProcessor  - failedConnectProcessor
> Falla intencional al conectar: Mensaje 1
>
> 2012-07-16 19:05:20,595 [Camel (camelContext) thread #1 - file://data/inbox]
> ERROR org.apache.camel.processor.DefaultErrorHandler  - Failed delivery for
> (MessageId: ID-miguel-thnk-58270-1342483504051-0-4 on ExchangeId:
> ID-miguel-thnk-58270-1342483504051-0-2). Exhausted after delivery attempt: 2
> caught: java.net.ConnectException: Falla intencional al conectar Ex:
> failedConnectProcessor
> java.net.ConnectException: Falla intencional al conectar Ex:
> failedConnectProcessor
>     at
> com.fcm.camel.test.FailedConnectProcessor.process(FailedConnectProcessor.java:26)
>     at
> org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:330)
>     at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220)
>     at
> org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:303)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.loadbalancer.FailOverLoadBalancer.processExchange(FailOverLoadBalancer.java:247)
>     at
> org.apache.camel.processor.loadbalancer.FailOverLoadBalancer.process(FailOverLoadBalancer.java:205)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:330)
>     at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220)
>     at
> org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:303)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at org.apache.camel.processor.Pipeline.process(Pipeline.java:117)
>     at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
>     at
> org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150)
>     at
> org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117)
>     at
> org.apache.camel.processor.RouteInflightRepositoryProcessor.processNext(RouteInflightRepositoryProcessor.java:48)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73)
>     at
> org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:336)
>     at
> org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:189)
>     at
> org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:155)
>     at
> org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:139)
>     at
> org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:91)
>     at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
>     at java.util.concurrent.FutureTask$Sync.innerRunAndReset(Unknown Source)
>     at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
>     at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(Unknown
> Source)
>     at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(Unknown
> Source)
>     at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown
> Source)
>     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
> Source)
>     at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
>     at java.lang.Thread.run(Unknown Source)
> 2012-07-16 19:05:20,596 [Camel (camelContext) thread #1 - file://data/inbox]
> TRACE org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  -
> Processing exchangeId: ID-miguel-thnk-58270-1342483504051-0-2 is continued
> being processed synchronously
> 2012-07-16 19:05:20,596 [Camel (camelContext) thread #1 - file://data/inbox]
> TRACE org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  - Should
> failover: true for exchangeId: ID-miguel-thnk-58270-1342483504051-0-2
> 2012-07-16 19:05:20,597 [Camel (camelContext) thread #1 - file://data/inbox]
> DEBUG org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  -
> Processing failover at attempt 1 for Exchange[null]
> 2012-07-16 19:05:20,597 [Camel (camelContext) thread #1 - file://data/inbox]
> ERROR com.fcm.camel.test.FailedConnectProcessor  - failedConnectProcessor
> Falla intencional al conectar: Mensaje 1
>
> 2012-07-16 19:05:20,799 [Camel (camelContext) thread #1 - file://data/inbox]
> ERROR com.fcm.camel.test.FailedConnectProcessor  - failedConnectProcessor
> Falla intencional al conectar: Mensaje 1
>
> 2012-07-16 19:05:20,800 [Camel (camelContext) thread #1 - file://data/inbox]
> ERROR org.apache.camel.processor.DefaultErrorHandler  - Failed delivery for
> (MessageId: ID-miguel-thnk-58270-1342483504051-0-6 on ExchangeId:
> ID-miguel-thnk-58270-1342483504051-0-2). Exhausted after delivery attempt: 2
> caught: java.net.ConnectException: Falla intencional al conectar Ex:
> failedConnectProcessor
> java.net.ConnectException: Falla intencional al conectar Ex:
> failedConnectProcessor
>     at
> com.fcm.camel.test.FailedConnectProcessor.process(FailedConnectProcessor.java:26)
>     at
> org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:330)
>     at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220)
>     at
> org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:303)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.loadbalancer.FailOverLoadBalancer.processExchange(FailOverLoadBalancer.java:247)
>     at
> org.apache.camel.processor.loadbalancer.FailOverLoadBalancer.process(FailOverLoadBalancer.java:205)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:330)
>     at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220)
>     at
> org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:303)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at org.apache.camel.processor.Pipeline.process(Pipeline.java:117)
>     at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
>     at
> org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150)
>     at
> org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117)
>     at
> org.apache.camel.processor.RouteInflightRepositoryProcessor.processNext(RouteInflightRepositoryProcessor.java:48)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73)
>     at
> org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:336)
>     at
> org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:189)
>     at
> org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:155)
>     at
> org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:139)
>     at
> org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:91)
>     at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
>     at java.util.concurrent.FutureTask$Sync.innerRunAndReset(Unknown Source)
>     at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
>     at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(Unknown
> Source)
>     at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(Unknown
> Source)
>     at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown
> Source)
>     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
> Source)
>     at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
>     at java.lang.Thread.run(Unknown Source)
> 2012-07-16 19:05:20,802 [Camel (camelContext) thread #1 - file://data/inbox]
> TRACE org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  -
> Processing exchangeId: ID-miguel-thnk-58270-1342483504051-0-2 is continued
> being processed synchronously
> 2012-07-16 19:05:20,802 [Camel (camelContext) thread #1 - file://data/inbox]
> TRACE org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  - Should
> failover: true for exchangeId: ID-miguel-thnk-58270-1342483504051-0-2
> 2012-07-16 19:05:20,802 [Camel (camelContext) thread #1 - file://data/inbox]
> DEBUG org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  -
> Processing failover at attempt 2 for Exchange[null]
> 2012-07-16 19:05:20,804 [Camel (camelContext) thread #1 - file://data/inbox]
> ERROR com.fcm.camel.test.FailProcessor  - failProcessor1 falla: Mensaje 1
>
> 2012-07-16 19:05:21,013 [Camel (camelContext) thread #1 - file://data/inbox]
> ERROR com.fcm.camel.test.FailProcessor  - failProcessor1 falla: Mensaje 1
>
> 2012-07-16 19:05:21,015 [Camel (camelContext) thread #1 - file://data/inbox]
> ERROR org.apache.camel.processor.DefaultErrorHandler  - Failed delivery for
> (MessageId: ID-miguel-thnk-58270-1342483504051-0-8 on ExchangeId:
> ID-miguel-thnk-58270-1342483504051-0-2). Exhausted after delivery attempt: 2
> caught: java.lang.NoSuchMethodException: Falla intencional failProcessor1
> java.lang.NoSuchMethodException: Falla intencional failProcessor1
>     at com.fcm.camel.test.FailProcessor.process(FailProcessor.java:24)
>     at
> org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:330)
>     at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220)
>     at
> org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:303)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.loadbalancer.FailOverLoadBalancer.processExchange(FailOverLoadBalancer.java:247)
>     at
> org.apache.camel.processor.loadbalancer.FailOverLoadBalancer.process(FailOverLoadBalancer.java:205)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:330)
>     at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220)
>     at
> org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:303)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at org.apache.camel.processor.Pipeline.process(Pipeline.java:117)
>     at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
>     at
> org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150)
>     at
> org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117)
>     at
> org.apache.camel.processor.RouteInflightRepositoryProcessor.processNext(RouteInflightRepositoryProcessor.java:48)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>     at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>     at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:73)
>     at
> org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:336)
>     at
> org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:189)
>     at
> org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:155)
>     at
> org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:139)
>     at
> org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:91)
>     at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
>     at java.util.concurrent.FutureTask$Sync.innerRunAndReset(Unknown Source)
>     at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
>     at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(Unknown
> Source)
>     at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(Unknown
> Source)
>     at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown
> Source)
>     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
> Source)
>     at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
>     at java.lang.Thread.run(Unknown Source)
> 2012-07-16 19:05:21,016 [Camel (camelContext) thread #1 - file://data/inbox]
> TRACE org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  -
> Processing exchangeId: ID-miguel-thnk-58270-1342483504051-0-2 is continued
> being processed synchronously
> 2012-07-16 19:05:21,016 [Camel (camelContext) thread #1 - file://data/inbox]
> TRACE org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  - Should
> failover: true for exchangeId: ID-miguel-thnk-58270-1342483504051-0-2
> 2012-07-16 19:05:21,016 [Camel (camelContext) thread #1 - file://data/inbox]
> DEBUG org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  -
> *Breaking out of failover after 3 failover attempts*
> 2012-07-16 19:05:33,362 [Camel (camelContext) thread #1 - file://data/inbox]
> DEBUG org.apache.camel.processor.loadbalancer.FailOverLoadBalancer  -
> *Failover complete for exchangeId*: ID-miguel-thnk-58270-1342483504051-0-2
>>>> Exchange[null]
> 2012-07-16 19:05:57,457 [Camel (camelContext) thread #1 - file://data/inbox]
> WARN *org.apache.camel.component.file.GenericFileOnCompletion  - Rollback
> file strategy:
> org.apache.camel.component.file.strategy.GenericFileRenameProcessStrategy*@43036651
> for file: GenericFile[content]
>
>
> Thanks
>
> --
> Miguel Ruiz Velasco Sobrino
> FCM Computacion Mexicana SAPI de CV
>



-- 
Claus Ibsen
-----------------
FuseSource
Email: cibsen@fusesource.com
Web: http://fusesource.com
Twitter: davsclaus, fusenews
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen