[ 
https://issues.apache.org/activemq/browse/CAMEL-1954?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=58370#action_58370
 ] 

Jim Talbut commented on CAMEL-1954:
-----------------------------------

I have a need of something similar to this, though I was thinking of 
implementing it outside of camel and then have it call camel routes as 
necessary.
My requirements are for:
* A clustered quartz implementation.
* Jobs configured entirely from code (jobs will be added and removed at 
runtime, so spring and other configuration files are of limited use for me).

> Proposition - add job scheduling feature to Camel
> -------------------------------------------------
>
>                 Key: CAMEL-1954
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-1954
>             Project: Apache Camel
>          Issue Type: New Feature
>            Reporter: Charles Moulliard
>             Fix For: Future
>
>
> 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 / Camel 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.
> Idea about implementation
> Definition of the "scheduler service"  :
> <job id="A" scheduler="ref to quartz cron definition" 
> errorHandlerRef="reference to the error handler 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 
>      <start ref=routeB/> // new job (= route to start)
>   </when>
>   <when>
>      <simple>job fails</simple>
>      <to queue:job:fail>
>   </when>
>   ...
> </job>
> Remarks :
> My proposition 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 parameter could be placed as a 
> message in the  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, ...

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to