The processor[1] is exactly that class so give it a try, also see the file language [2] for dynamically setting filename.
[1] http://camel.apache.org/processor.html [2] http://camel.apache.org/file-language.html On 29 Dec 2011, at 9:14 PM, David Wynter <david_wyn...@yahoo.com> wrote: > Hi, > > Yes it is a dynamic path for producer and consumer. Restricted in this case > as ftp to file or in another case from file to ftp. This use case is very > restricted, my intent is to use Camel in a less restricted way in another use > case from within this same application later, otherwise I would have just > used FTPClient > > So you are saying I just need a class in the route that has access to the > exchange to be able to stop it. I'll have a dig around in the JavaDoc to see > what I can find. Are there more examples somewhere of how to use the API? > > Thx. > > > ________________________________ > From: Taariq Levack <taar...@gmail.com> > To: "users@camel.apache.org" <users@camel.apache.org> > Sent: Thursday, 29 December 2011, 18:56 > Subject: Re: NPE for FTP endpoint > > Why do you want to create a processor definition that way? > The example only uses the processor to illustrate the point, it has access to > the exchange and can easily remove it from the inflight repo of the camel > context. > To do it your way I don't know without an IDE handy, I avoid working with low > level camel API in my apps, so maybe first try to avoid it in this case or > help me understand why you need it. > > Maybe you're only doing this to set a dynamic path for the consumer and > producer? > > Taariq > > On 29 Dec 2011, at 8:26 PM, David Wynter <david_wyn...@yahoo.com> wrote: > >> Ok, I misunderstood the "Stopping a route during routing an existing message >> is a bit tricky. The reason for that is Camel will Graceful Shutdown the >> route you are stopping. And if you do that while a message is being routed >> the Graceful Shutdown will try to wait until that message has been >> processed." Which made me think the Processor method described an alternate >> way and therefore would stop the route during the message transfer. In fact >> you are saying it is an equivalent operation, I think. >> >> Since I am doing this in code I am not sure which of the many impl of >> ProcessDefinition I should be adding to a RouteContext and then adding to >> the Route. >> >> Is it like this? >> >> RouteDefinition routeD = new RouteDefinition(); >> routeD.from(sourcePath); >> >> routeD.to(localPath+"?fileExist=Override"); >> RouteContext rContext = new DefaultRouteContext(camelContext); >> ProcessorDefinition pDefn = ? >> rContext.createProcessor(pDefn); >> routeD.createProcessor(rContext); >> routeDefn.put(sourcePath+localPath+"?fileExist=Override", routeD); >> camelContext.addRouteDefinition(routeD); >> camelContext.startRoute(routeD); >> >> Not sure which ProcessorDefinition type I need. >> >> Thx. >> >> David >> >> ________________________________ >> From: Taariq Levack <taar...@gmail.com> >> To: "users@camel.apache.org" <users@camel.apache.org> >> Sent: Thursday, 29 December 2011, 17:50 >> Subject: Re: NPE for FTP endpoint >> >> Hmmm, can you talk more about your use case? >> Because the FAQ seems a perfect fit, you consume the file and then stop the >> route, later it starts again in whatever way you want. >> >> No idea on the NPE, sorry. >> >> Taariq >> >> On 29 Dec 2011, at 7:29 PM, David Wynter <david_wyn...@yahoo.com> wrote: >> >>> Hi, >>> >>> I do not want to stop the route mid flight as that FAQ seems to be >>> suggesting. I would be happy to use DefaultShutdownStrategy, if it worked. >>> My problem is that it is inconsistent, which seems bad design, on a slow >>> machine the route is not considered started by the time I hit the >>> stopRoute, whereas on a fast machine it is considered started. I even used >>> Thread delays but that did not give consistent results either. Thus I >>> decided to leave the route running, but that polls the server, a no no with >>> this service provider. There does not seem a way to just do it once and >>> then be certain the fetch has occurred before stopping the route to prevent >>> the polling. I'd like to poll until my fetch from the ftp server is >>> complete, and then stop polling and stop the route, I'll start it again >>> when I am ready. There does not seem to be a way of adding a listener to >>> the route to ask it, "hey have you actually completed the route for the >>> file specified?" The only way I >>> can think of doing this is adding a custom endpoint as a next step, this >>> custom endpoint then calls for the route to be stopped. >>> >>> But these are the least of my worries since on my customers machine I get >>> the NPE, but in testing here I do not? Any ideas on this NPE? >>> >>> Thx. >>> >>> David >>> >>> >>> ________________________________ >>> From: Taariq Levack <taar...@gmail.com> >>> To: "users@camel.apache.org" <users@camel.apache.org> >>> Sent: Thursday, 29 December 2011, 17:14 >>> Subject: Re: NPE for FTP endpoint >>> >>> Hi >>> >>> Did you try this FAQ[1] on how to stop a route from a route? >>> [1] http://camel.apache.org/how-can-i-stop-a-route-from-a-route.html >>> >>> Taariq >>> >>> On 29 Dec 2011, at 6:12 PM, David Wynter <david_wyn...@yahoo.com> wrote: >>> >>>> Hi, >>>> >>>> I tested on my machine and deployed to my customer, It went boom as >>>> follows, names etc. changed to protect the innocent. >>>> >>>> All I want to do with this route is grab a file from a ftp service, once, >>>> don't poll it annoys them, leave the file intact on their server. I will >>>> control when this route is run externally. I tried it with start() follow >>>> by stop(), >>>> >>>> camelContext.addRouteDefinition(routeD); >>>> camelContext.startRoute(routeD); >>>> but the DefaultShutdownStrategy is flaky, on a slow machine it does not >>>> consider the route started before the stop() is hit, whereas on a fast >>>> machine it does. So I am forced to leave the route running