I studied PollingConsumerPollStrategy error handling strategies and i still amnot abloe to find a way to handle errors. i think its a bit strange that is done one way inside the "boundary" (i.e., after the first endpoint is instantiated) and a different way thereaftr (i.e., if an "interior" endpoint fails).
in summary, I need to install an error handler to handle any permanent errors with a route in the following fashion --> try { from(r1).filter(mybeanfilter).to(r3).process(terminationprocessor) // terminationprocessor = remove this route from context (1) } (if fails) { // remove this route from context (2) } i need it since i need to remove the route after its done (either successfully (1) or unsuccessfully (2)). My terminationprocessor removes the route after a successful workflow. i want to be able to remove the route in case of a failed workflow as well. problem is, neither the deadLetterHandler nor the PollingConsumerPollStrategy error handler gets the context to the route so that i could remove it off the context: public class MyerrHandler implements PollingConsumerPollStrategy { public void begin(Consumer consumer, Endpoint endpoint) { ...} public void commit(Consumer consumer, Endpoint endpoint) { ... } public boolean rollback(Consumer consumer, Endpoint endpoint, int retries, Exception exception) throws Exception { // remove route that caused this failure from endpoint.getContext(). // but how do I know which route? } } MyerrHandler errHandler = new MyerrHandler (); // named "myerrHandler" in bean registry String uri2 = "ftp://server/&pollStrategy=#myerrHandler"; Now I want access to the route that failed in myerrHandler's rollback() method so I could remove the route from the context. how i can do that? many thanx for any help! /U Claus Ibsen-2 wrote: > > On Wed, Mar 24, 2010 at 11:30 PM, /U <uma...@comcast.net> wrote: >> >> thnaks for the help - it works. Only problem: >> if connection to toUri fails, MyErrorhandler is >> invoked; but if connection to fromUri fails, >> MyErrorHandler not invoked! >> >> for example, >> >> from("file://a.log").onException(Exception.class).process(MyErrHandler).to("ftp://u...@server?....").end() >> is working if I cant connect to ftp server; but >> >> >> from("ftp://u...@server?....").onException(Exception.class).process(MyErrHandler).to("file://a.log").end() >> not invoking MyErrHandler if server not online. >> >> why this difference in behavior? >> > > Read chapter 5 in the Camel in Action book which explains error > handling in great details. > > And see PollingConsumerPollStrategy if you want to do some custom code > if the "from" fails > http://camel.apache.org/polling-consumer.html > >> >> Claus Ibsen-2 wrote: >>> >>> Hi >>> >>> onException should be set right after from. So you route should be >>> >>> from(fromUri) >>> .onException(Exception.class).process(new >>> MyErrorHandler(fromUri)).end(); >>> .to(toUri); >>> >>> And you can use .toF to pass arguments (like String.format). Or its >>> simply just Java so you can do .to("xxx" + "?yyy=zzz"); >>> >>> >>> On Tue, Mar 23, 2010 at 11:43 PM, /U <uma...@comcast.net> wrote: >>>> >>>> Camel: 2.2.0: >>>> >>>> i have route builder which adds a route as follows with a >>>> deadLetterChannel >>>> as a fallback error handler and an onException fork: >>>> >>>> >>>> >>>> errorHandler(deadLetterChannel("bean:myBean?method=processError")); >>>> // >>>> from(fromUri).to(toUri).end(). >>>> onException(Exception.class).process(new >>>> MyErrorHandler(fromUri)).stop(); >>>> >>>> >>>> Problem is: when the message cannot be routed to the destination >>>> endpoint >>>> (say, because the endpoint URI is not reachable) >>>> the onException nominated ErrorHandler is never invoked; instead the >>>> deadLetterChannel() >>>> is invoked. This would be fine except for the fact that I need an >>>> application context >>>> in the error handler for cleanup: while I am able to pass the required >>>> context to my >>>> onException error handler (as shown above), I am not sure how to do >>>> that >>>> with the >>>> deadLetterChannel. >>>> >>>> Questions: >>>> - why isn't onException() method invoked? >>>> - is there a way to pass an arbitrary data to a bean which is used as >>>> an >>>> endpoint. Eg: >>>> to("bean:myBean?method=processError&arg="+fromUri) >>>> >>>> regardds, >>>> >>>> /U >>>> >>>> -- >>>> View this message in context: >>>> http://old.nabble.com/onException%28%29-tp28008233p28008233.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/onException%28%29-tp28008233p28022280.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/onException%28%29-tp28008233p28102352.html Sent from the Camel - Users mailing list archive at Nabble.com.