Hi, Don't know how I missed that search box, a dooh moment. Thx.
Reading this http://camel.apache.org/using-getin-or-getout-methods-on-exchange.html and several other example it looks like Exchange is designed for Message exchange. How this relates to 1 or more fat files being fetched is not at all clear. Is the body of the message the a handle for all files in the list that match the filename pattern? I.e is there somewhere that explains how a Exchange is used when the from Endpoint is NOT a message of some type? Do I need to write a Processor for the Exchagne that grabs the list of files from theh Message and manages the writing of those file to disk? David ________________________________ From: Claus Ibsen <claus.ib...@gmail.com> To: users@camel.apache.org Sent: Tuesday, 3 January 2012, 16:38 Subject: Re: NPE for FTP endpoint Hi There is a search box on the Camel front page http://camel.apache.org/ Just enter some key words in the search box and check the hits. Exchange exchange = consumerTemplate.receiveNoWait("ftp:someserver?username=foo&password=secret&fileName=mycoolfile.txt"); if (exchange != null) { ... } Check out appendix C in the Camel in Action book as well. On Tue, Jan 3, 2012 at 5:33 PM, David Wynter <david_wyn...@yahoo.com> wrote: > Hi, > > That is simpler. But not clear, after digging around in the documentation ( > there is a lot of it and it really needs a search function) how I get an > Exchange to route to a endpoint for the file that is being downloaded. Based > on this statement "The Exchange is then sent down the Route for processing > along a Processor chain." from > here http://camel.apache.org/maven/current/camel-core/apidocs/index.html I > still need that Route. I do not see a "setOutEndpoint" where I could have > added my file:/ destination. In fact the only thing I can see is the > setOutMessage, but it is not clear how I attach a Endpoint to that? > > Thx. > > David > > > ________________________________ > From: Claus Ibsen <claus.ib...@gmail.com> > To: users@camel.apache.org; David Wynter <david_wyn...@yahoo.com> > Sent: Tuesday, 3 January 2012, 16:04 > Subject: Re: NPE for FTP endpoint > > Hi > > Take a look at the polling consumer EIP pattern > http://camel.apache.org/polling-consumer.html > > It allows you to poll messages on-demand from any Camel endpoint. > > And you can use the ConsumerTemplate API to do it from a few lines of code. > > Then you do not need any Camel routing, etc. > > > > On Tue, Jan 3, 2012 at 3:48 PM, David Wynter <david_wyn...@yahoo.com> wrote: >> Hi, >> >> I implemented my HaltProcessor. But it still does not behave as I thought. I >> could not see where in the documentation it explains the route behaviour for >> shutdown. I have this: >> >> String sourcePath = createFromUri(); >> if(sourcePath == null) >> return; >> String to = localName.length()>0?localName:""; >> RouteDefinition routeD = new RouteDefinition(); >> routeD.from(sourcePath); >> >> routeD.to(localPath+"?fileExist=Override"); >> HaltProcessor pHalt = new HaltProcessor(); >> pHalt.setContext(camelContext); >> routeD.routeId(sourcePath); >> pHalt.setRouteId(sourcePath); >> routeD.process(pHalt); >> camelContext.addRouteDefinition(routeD); >> >> camelContext.startRoute(routeD); >> >> where Halt Processor has this process method body: >> >> if(context!=null && routeId != null) { >> // remove myself from the in flight registry so we can stop this >> route without trouble >> context.getInflightRepository().remove(exchange); >> // stop this route >> context.stopRoute(routeId); >> >> My problem is this. The startRoute occurs and starts the route then >> immediately hits the HaltProcessor. It hits the HaltProcessor before >> completing the ftp download, which might be a 2KB file or a hundred 1MB >> files. Then it all exits and my next task in a workflow executes. It depends >> on the file being completely downloaded from the download the route >> provides. But it seems the calling thread is terminated but some other >> thread continues the task of doing the download, this isn't completed by the >> time the route returns. >> >> My requirement is simple, download the file from ftp, do not return until >> this is done, do it once only, do not poll, just return at this point. Do I >> need my own ShutdownStrategy for this simple requirement, if so, is there a >> listener I can setup to know the file has completed the download? >> >> A separate problem is even using noop=true it still polls. >> >> Thx. >> >> David >> >> >> >> ________________________________ >> From: Taariq Levack <taar...@gmail.com> >> To: "users@camel.apache.org" <users@camel.apache.org> >> Sent: Thursday, 29 December 2011, 19:35 >> Subject: Re: NPE for FTP endpoint >> >> 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 > > > > -- > Claus Ibsen > ----------------- > FuseSource > Email: cib...@fusesource.com > Web: http://fusesource.com > Twitter: davsclaus, fusenews > Blog: http://davsclaus.blogspot.com/ > Author of Camel in Action: http://www.manning.com/ibsen/ -- Claus Ibsen ----------------- FuseSource Email: cib...@fusesource.com Web: http://fusesource.com Twitter: davsclaus, fusenews Blog: http://davsclaus.blogspot.com/ Author of Camel in Action: http://www.manning.com/ibsen/