[
https://issues.apache.org/activemq/browse/CAMEL-1954?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Charles Moulliard closed CAMEL-1954.
------------------------------------
Resolution: Fixed
I think that the new feature proposed in Camel 2.5
(http://camel.apache.org/routepolicy.html) allows to schedule routes in camel
using a scheduledRoute with Quartz. Even if the cron scheduler is defined as
parameter in the camel route, it allows to start/stop camel routes inside the
container where it is deployed. This simplifies the architecture and avoid to
scan the bundles to detect which one must be started and stopped. As a bundle
can contain more than one camel route, this is a better idea that the route
policy associated with the route take care about when the route must be started
and stopped.
I propose to close my ticket
> 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.