Hello, I do not agree with you. Declarative route definitions is available in pretty much all integration platforms/frameworks. The real good thing I find with Camel is the possibility to start/stop routes, build dynamic routes and even add new routes in runtime using different DSL.
> In the case of the problem, discussed in this thread, maybe it > would be better approach to have static route consuming files from the > folder B, and second route, initiated by a timer, that moves files at > 6AM from the folder A (inbox) to the folder B? > I do not see how this approach would be simpler. You would have the same problem with the second, timer initiated, route as you have with the route in the initial question. The reason is that the file component only picks up one file, and not a complete batch, when used as content enricher. If it didn't or if you only need to fetch one file then the timer initiated followed by a pollEnricher("file:...") would be a much better approach. > Another possible > approach could be to have an aggregator in the route with completion > expression specified accordingly (maybe file references instead of > streams should be passed in such case)? > IMHO using a aggregator for this would be more complicated than suspending/resuming the route. Also using this solution would probably not move the files at 6 am but at the time the next file after 6 am is available. And that could be much later. Unless you add a second trigger based route that sends a dummy message into the aggregator. That said, when faced with the very common requirement "The files must be moved at 6 am". I always ask if this is the real requirement of if what they really ask for is "The files must be moved before 6 am". In the later case you can have a simple file route that moves the files as they come into the inbox. But this is just my $0.02 Best regards Pontus Ullgren On Sun, Aug 26, 2012 at 12:51 PM, Karolis Petrauskas <k.petraus...@gmail.com> wrote: > Hi, > > My question is maybe not related to the topic directly, but I > would like to get your opinions. Is it good approach to design > applications in a way that the routes are dynamically started and > stopped? As I understand, one of the good points about Camel routes is > that they are declarative. That makes the system simpler, there is > less room for bugs, etc. By managing routes dynamically, one broke > that simplicity. > > In the case of the problem, discussed in this thread, maybe it > would be better approach to have static route consuming files from the > folder B, and second route, initiated by a timer, that moves files at > 6AM from the folder A (inbox) to the folder B? Another possible > approach could be to have an aggregator in the route with completion > expression specified accordingly (maybe file references instead of > streams should be passed in such case)? Other solutions could be > enumerated here also, but the main point here is that the routes > should be static. > > Karolis > > On Sun, Aug 26, 2012 at 10:19 AM, Claus Ibsen <claus.ib...@gmail.com> wrote: >> On Sun, Aug 26, 2012 at 9:14 AM, Pontus Ullgren <ullg...@gmail.com> wrote: >>> Hello, >>> >>> You can combine the CronScheduledRoutePolicy with the use of the >>> sendEmptyMessageWhenIdle option of the file component [1]. >>> You will then get a empty message when there are no more files left >>> and you can then suspend or stop [2] the route. >>> >> >> Yeah that is also a good solution. As the empty message will only be >> sent when there is no more files in a separate poll. >> The only trick parts is that your routing logic would need to cater >> for an "empty message" being routed. >> >>> [1] http://camel.apache.org/file2.html >>> [2] http://camel.apache.org/how-can-i-stop-a-route-from-a-route.html >>> >>> Best regards >>> Pontus Ullgren >>> >>> On Sat, Aug 25, 2012 at 7:13 PM, Ashwin Pejavar >>> <ashwin.peja...@gmail.com> wrote: >>>> I have a use-case where I need to consume files at a fixed cron schedule. >>>> >>>> For example, I need my input route to resume everyday at 6AM, process all >>>> files collected in the input directory and go into suspension till 6AM the >>>> following day. >>>> >>>> I was hoping the CronScheduledRoutePolicy would be useful, but that doesn't >>>> quite do what I need. I can use it to start the route at 6AM, but there >>>> seems to be no way of automatically suspending it when all the files are >>>> processed. >>>> >>>> Is there a way of doing this in Camel? >>>> >>>> >>>> >>>> -- >>>> View this message in context: >>>> http://camel.465427.n5.nabble.com/Periodic-route-activation-use-case-tp5718059.html >>>> Sent from the Camel - Users mailing list archive at Nabble.com. >> >> >> >> -- >> Claus Ibsen >> ----------------- >> FuseSource >> Email: cib...@fusesource.com >> Web: http://fusesource.com >> Twitter: davsclaus, fusenews >> Blog: http://davsclaus.com >> Author of Camel in Action: http://www.manning.com/ibsen