Manuel,

The trick with the Processor should work as well.  Are you experiencing any
problems with it?

Gert


Manuel EVENO wrote:
> 
> Thanks Gert for these information !
> 
> I foudn the way to configure the deadLetterChannel Behavior but I stil
> can't
> configure the final exception behavior.
> 
>>> If you want the DeadLetterChannel handling to fail (instead of log)
>>> after
> the redelivery attempts, you can end the deadLetterChannel()
>>> clause in your RouteBuilder with .throwFault() to force the exception.
> 
> The .throwFault() method seems to be part of the ProcessorType class but
> the
> ErrorHandlerBuilderSupport (and DeadLetterChannelBuilder) class doesn't
> have
> such method.
> Guided by your hint (specially reading your sentence "instead of log"),
> I've
> looked for the log step and found the defaultDeadLetterEndpointUri which
> points to log:org.apache.camel.DeadLetterChannel?level=error";
> 
> So if I change the default dead letter endpoint to the following, does
> this
> make the exception trick ?
> 
>         deadLetterChannel.setDefaultDeadLetterEndpoint(new Processor() {
>             public void process(Exchange exchange) throws Exception {
>                 throw new CamelExchangeException("All message redeliveries
> failed", exchange);
>             }
>         });
> 
> Manuel
> 
> On Mon, Jul 21, 2008 at 7:57 AM, Gert Vanthienen
> <[EMAIL PROTECTED]>
> wrote:
> 
>> Manuel,
>>
>> If you do not configure any specific ErrorHandler in your Camel
>> RouteBuilder, Camel will default to using a DeadLetterChannel handler
>> with
>> 5? re-delivery attempts and logging an error after these delivery
>> attempts.
>>  From a JBI perspective, by logging the error message, it has been
>> handled
>> and that's why you are getting the DONE status back.  We're looking to
>> changing this default behavior for a next release of Camel.
>>
>> For now, you can configure a more appropriate ErrorHandler yourself.  If
>> you want no error handling by Camel at all, you can use
>> errorHandler(noErrorHandler()) at the top of your RouteBuilder to get
>> this
>> done.  This page (http://activemq.apache.org/camel/error-handler.html)
>> shows you a bit more information about configuring Camel error handler
>> strategies.  You can also find examples on how to configure the
>> deadletterchannel.  If you want the DeadLetterChannel handling to fail
>> (instead of log) after the redelivery attempts, you can end the
>> deadLetterChannel() clause in your RouteBuilder with .throwFault() to
>> force
>> the exception.
>>
>> Regards,
>>
>> Gert
>>
>>
>> Manuel EVENO wrote:
>>
>>> Hi,
>>>
>>> I've got a mediation with cxf-bc:consumer -> camel ( cxf-bc:provider ->
>>> saxon:xquery )
>>>
>>> Here is the camel route :
>>>        from("jbi:service:
>>> http://hello.samples.sofinco.com/HelloServiceRoute";)
>>>            .to("jbi:endpoint:
>>> http://hello.samples.sofinco.com/HelloService/HelloService";)
>>>            .to("jbi:endpoint:
>>> http://hello.samples.sofinco.com/HelloServiceTransform/HelloServiceTransform
>>> ");
>>>
>>> When the called service (the one used by cxf-bc:provider) is
>>> unreachable,
>>> no exception is returned to the calling client (the one calling the
>>> ESB).
>>> The client failed either on a timeout (if the redelivery process takes
>>> long time) or by receiving a wrong ouput message (the input message)
>>> Why doesn't the default behavior simply send an error ?
>>>
>>> More strange, the message exchange finished on a 'done' status instead
>>> of
>>> a 'error' status ...
>>>
>>> How to configure servicemix (or camel) to send an error back to the
>>> client
>>> when an error occurs in a message exchange
>>> and after the redelivery attempts all failed ?
>>>
>>> Manuel
>>>
>>>
>>
>>
> 
> 


-----
---
Gert Vanthienen
http://www.anova.be
-- 
View this message in context: 
http://www.nabble.com/Understanding-the-default-behavior-on-exception-tp18530599p18564323.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Reply via email to