Even by removing the exchange.setOut I am not seeing the header I've added
when checking the exchange In message on the exception processor.
this is my current process for interceptSendToEndpoint:
public void process(Exchange exchange) throws Exception {
String deliveryEndPoint =
exchange.getIn().getHeader(Exchange.INTERCEPTED_ENDPOINT).toString();
Message camel_reply = exchange.getIn();
camel_reply.setHeader("current-endpoint", deliveryEndPoint);
}
I did a small test by changing the body on each intercept process and when
the exception is thrown I
see the original body of the message and not the one I've changed, it looks
like I am looking into the wrong thing in the exception processor:
public void process(Exchange exchange) throws Exception {
Throwable caused = exchange.getProperty(Exchange.EXCEPTION_CAUGHT,
Throwable.class);
Message inMsg = exchange.getIn();
//inMsg body is the original one and not the one that has been
modified by the interceptor.
}
Claus Ibsen-2 wrote:
>
> On Wed, Nov 4, 2009 at 5:12 PM, mcrive <[email protected]> wrote:
>>
>> I've configured following route:
>>
>> interceptSendToEndpoint("*").process(new SendToEndPointHandler());
>>
>> onException(GenericFileOperationFailedException.class)
>> .process(new DeliveryFailureHandler());
>>
>> from("test-jms:queue:notificationtest.queue")
>> .process(processor)
>> .recipientList(header("recipientListHeader").tokenize(","));
>>
>>
>> SendToEndPointHandler does following on process method:
>> String deliveryEndPoint =
>> exchange.getIn().getHeader(Exchange.INTERCEPTED_ENDPOINT).toString();
>> Message camel_reply = exchange.getIn();
>> camel_reply.setHeader("current-endpoint", deliveryEndPoint);
>
>
> Remove this one line below as you do not want to change the exchange
> pattern. All you wanted to do was to add that 1 extra header on the IN
> message.
>
>
>> exchange.setOut(camel_reply);
>>
>>
>> unfortunately on DeliveryFailureHandler I am not seeing the new injected
>> header...
>> what am I missing?
>>
>>
>>
>>
>>
>> Claus Ibsen-2 wrote:
>>>
>>> You can use interceptSendToEndpoint
>>> http://davsclaus.blogspot.com/2009/05/on-road-to-camel-20-interceptors-round.html
>>> And see more details at the Camel documentation (link from above)
>>>
>>>
>>> And then have it decorate with a custom header what the endpoint is.
>>> That you can retrieve in your error processor.
>>>
>>> The intercepted endpoint is stored in the IN message header as:
>>> Exchange.INTERCEPTED_ENDPOINT
>>>
>>
>> --
>> View this message in context:
>> http://old.nabble.com/Error-handling-with-recipientList-tp26196454p26199328.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
>
>
>
> --
> Claus Ibsen
> Apache Camel Committer
>
> Author of Camel in Action: http://www.manning.com/ibsen/
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
>
>
--
View this message in context:
http://old.nabble.com/Error-handling-with-recipientList-tp26196454p26200307.html
Sent from the Camel - Users mailing list archive at Nabble.com.