2016-07-29 98 views
-1

我在我的应用程序中有一个骆驼路线,它用cron表达式触发。我正在使用camel quartz2调度程序,但我不确定如何将quartz2集群化,因为我们需要在多个节点上部署此应用程序。 以下是启动骆驼路线的触发器。如何使apache camel quartz2调度程序集群

from("quartz2://foo?cron=1+1+1+*+*+?&trigger.timeZone=Australia/Melbourne") 

任何人都可以请帮助我在群集环境中进行配置。

我得到下面当我执行这条路线:

Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. 
    NOT STARTED. 
    Currently in standby mode. 
    Number of jobs executed: 0 
    Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads. 
    Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support  persistence. and is not clustered. 
+0

您能否详细说明一下 - 聚集环境?期望是什么? – Jayaraj

回答

0

这可通过将org.quartz.jobStore.isClustered设置为true来实现。下面是从the official documentation报价:

通过设置“org.quartz.jobStore.isClustered”属性设置为“真”启用集群。集群中的每个实例都应该使用quartz.properties文件的相同副本。例外情况是使用相同的属性文件,并带有以下可允许的异常:不同的线程池大小以及“org.quartz.scheduler.instanceId”属性的不同值。集群中的每个节点必须具有唯一的instanceId,通过将“AUTO”作为该属性的值,可以轻松完成(不需要不同的属性文件)。

要配置这与骆驼,你将不得不把quartz.properties文件在src/main/resources/org/quartz。或者,您可以自定义Quartz组件并提供一个自定义属性文件或Properties的实例。看看the official Camel documentation

+0

谢谢米洛斯,我明白了。 – VishalS

+0

我还有一个问题。是否有可能我可以使调度程序群集而不使用数据库表 – VishalS

+0

不幸的是,不是我所知道的 - 没有数据库,您的实例将无法正确同步。 –

0

看来你是误解“未启动”的消息。石英实际上是在你的情况下开始的。请等到时间满足您的cron表达式以启动作业/应用程序。 要查看石英的测井设置,请参阅Visit here.

+0

感谢Jayaraj,我知道它已启动,但它并未以群集模式启动。我想以集群模式启动它。我知道我可以使用属性文件来做到这一点,但我无法配置属性文件。 – VishalS