Quartz support should allow stateful jobs
-----------------------------------------
Key: CAMEL-1002
URL: https://issues.apache.org/activemq/browse/CAMEL-1002
Project: Apache Camel
Issue Type: Improvement
Components: camel-quartz
Affects Versions: 1.4.0
Reporter: Martin Gilday
See http://www.nabble.com/Clustered-Quartz-td20068086s22882.html
Currently Quartz only has CamelJob which implements Quartz's Job interface.
There is no option to use an implemenation of StatefulJob. This causes
problems when you may want to use a JDBC JobStore and have Quartz running on
multiple machines, as you may end up with multiple jobs running together.
StatefulJob in effect allows for a blocking singleton style job on one machine.
Attached is a patch which adds a new URI parameter named "stateful", which
defaults to false. When set to true it uses StatefulCamelJob.
One significant change to the QuartzComponent is that a reference to the
CamelContext is now stored in the Quartz Scheduler. This idea is taken from
Spring's SchedulerFactoryBean which stores a reference to a Spring
ApplicationContext. This is needed as when using stateful jobs the URI of the
Endpoint is stored instead of a reference to the endpoint. This is to allow
for the use of JDBC JobStore as the URI can be serialised and shared beteen
participating schedulers.
Current Faults:
Still has no notion of volatility
Difference in operation between CamelJob and StatefulCamelJob is not strictly
needed. It may be less confusing if both versions simply store the URI
instead of an endpoint reference.
You need to use stateful if you want to use clustering at all due to the reason
above. This is mixing together clustering support and blocking functionality.
In Camel 2 we may want to try rewriting this Component as it is becoming a
little messy. It would be nice to try and harness the power of Spring's
SchedulerFactoryBean.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.