Your route looks simple, why dont you just use a POJO and use the Camels ProducerTemplate and ConsumerTemplate to send/receive. And do the filter in the POJO as well. You can use Camel Predicate to evaluate the Exchange.
Then you do NOT need a route at all and hence dont need to worry about removing it from Camel. On Thu, Apr 1, 2010 at 8:41 AM, /U <uma...@comcast.net> wrote: > > > i need to remove the route because its a transient and won't > be used again after the workflow has completed. If the route > is simply stopped, does it get garbage collected away? won't > such stale routes accumulate and take upmemory? > > also, is it expensive to perhaps create a distinct camelcontext for > each such route so the entire context can be destroyed after > workflow is complete? > > much thanks! > > /U > > > Claus Ibsen-2 wrote: >> >> Hi >> >> Why do you need to remove it? Can you just stop it instead? >> The Camel in Action book, chapter 13, contains details how to stop and >> start routes at runtime. >> >> There are methods on CamelContext to do that. Which you can easily >> invoke from a onCompletion in the route. >> >> >> On Thu, Apr 1, 2010 at 12:08 AM, /U <uma...@comcast.net> wrote: >>> >>> 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. >>> >>> >> >> >> >> -- >> 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-tp28008233p28105055.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