I will open a ticket in Camel JIRA Charles Moulliard Senior Enterprise Architect Apache Camel Committer
***************************** blog : http://cmoulliard.blogspot.com On Fri, Aug 28, 2009 at 12:28 PM, Guillaume Nodet <[email protected]> wrote: > Right, I think that would be the way to go. > It should be possible to set that up using pure spring-dm stuff and camel. > > On Fri, Aug 28, 2009 at 11:31, Charles Moulliard <[email protected] > >wrote: > > > You are right, I completely forget that bundles are started > asynchronously. > > Nevertheless, I would prefer to have something running outside of the > > camelcontext even if the job scheduler is developed/based on Camel > > technology as we can have several camel context running in separate > > bundles. > > > > Imagine that we define a "scheduler service" like this : > > > > <job id="A" scheduler="ref to quartz cron definition" > > errorHandlerRef="reference to the error hnadler who will handle the > > exception"> > > <start ref="routeA"> // bean refering to a camel toute > > <transacted> // can be used when we have transacted job (= routes) > > <choose> > > <when> > > <simple>job succeed</simple> > > <stop ref="routeA"/> > > <to queue:job:succeed> // can be a queue component where job report > > information will be send OR > > <start ref=routeB/> > > </when> > > <when> > > <simple>job fails</simple> > > <to queue:job:fail> > > </when> > > ... > > </job> > > > > > > Remarks : > > My hypothesis depends on the following assertions : > > - CamelContexts must be exported/exposed as a blueprint/spring DM/... > > services, > > - Routes defines in camel context are visible, > > - When the job is started, it will wait to receive from camel route a > > return > > parameter : fail or succeed. Maybe this return could be placed as a > message > > in the a scheduler queue that the job context is listening !! > > - If the job does not receive fail or succeed, then it should be possible > > to > > stop it (though console, mbeans, ... > > > > Regards > > > > Charles Moulliard > > Senior Enterprise Architect > > Apache Camel Committer > > > > ***************************** > > blog : http://cmoulliard.blogspot.com > > > > > > On Fri, Aug 28, 2009 at 10:18 AM, Guillaume Nodet <[email protected]> > > wrote: > > > > > While I think this is very valuable, my first impression is that > > scheduling > > > at the bundle level is not necesseraly a good idea. > > > I would think this would be more suitable to do that at the camel route > > > level. > > > The CamelContext has features to start / stop routes already, so it > > should > > > be quite easy to implement a scheduler on top of that. > > > > > > For bundles, it can be valuable too, but the problem is that bundles > can > > be > > > started asynchronously (when using spring-dm or blueprint) so having > some > > > kind of return value would be quite difficult. > > > Actually, you could use camel itself to implement the scheduler and > start > > / > > > stop other routes or bundles ? It could also handle a timeout I think > > and > > > send alerts ... Camel is quite powerful, so it sounds reasonable to use > > it. > > > > > > Thoughts ? > > > > > > On Thu, Aug 27, 2009 at 09:45, Charles Moulliard <[email protected] > > > >wrote: > > > > > > > Hi, > > > > > > > > Since a couple of days I try to find an easy way to handle "jobs" in > > > Apache > > > > Felix Karaf and Camel. In standard, Camel proposes a camel-timer and > > > > camel-quartz components but they can only be used inside a camel > route. > > > By > > > > the way, camel context or camel routes are not "schedulable" like it > is > > > > possible with Spring batch. So it is not possible to start a route at > > > 9:00 > > > > and stop it at 11:00 and to check if the route succeed or fails > inside > > a > > > > OSGI server. OF course, if camel is packaged in java standalone > > > application > > > > or j2EE server, alternative exist. > > > > > > > > This is why I come with the following idea who could be very > > interesting > > > > for Apache Felix Karaf in term of enterprise added value. > > > > > > > > *Job Scheduler for starting and stopping bundles* > > > > > > > > With the help of a quartz configuration file, the kernel of Apache > > Felix > > > > Karaf can check which bundles have to be scheduled (like jobs) and > > > > started/stopped. The bundle to be started could be a camel route, > .... > > > When > > > > the bundle stops or if the thread is still running at the end of the > > job, > > > > this information must be returned to the job scheduler in order to > > decide > > > > what to do (wait and send an alert to administrator to decide what to > > > do). > > > > Another interesting feature could be to return fail / succeed to the > > job > > > > scheduler to keep trace of what happen during job execution. This > > > > information could be also used to link jobs / bundles together as > this > > is > > > a > > > > feature that you have with tool like IBM Tivoli Manager where you can > > > chain > > > > jobs. > > > > > > > > Regards, > > > > > > > > Charles Moulliard > > > > Senior Enterprise Architect > > > > Apache Camel Committer > > > > > > > > ***************************** > > > > blog : http://cmoulliard.blogspot.com > > > > > > > > > > > > > > > > -- > > > Cheers, > > > Guillaume Nodet > > > ------------------------ > > > Blog: http://gnodet.blogspot.com/ > > > ------------------------ > > > Open Source SOA > > > http://fusesource.com > > > > > > > > > -- > Cheers, > Guillaume Nodet > ------------------------ > Blog: http://gnodet.blogspot.com/ > ------------------------ > Open Source SOA > http://fusesource.com >

