我在quartz.properties中有以下配置
org.quartz.scheduler.instanceId=AUTO
org.quartz.scheduler.instanceName=JobCluster
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
org.quartz.jobStore.dataSource=myDataSource
org.quartz.dataSource.chargebackDataSource.jndiURL=jdbc/myDataSource
org.quartz.jobStore.isClustered=true
org.quartz.threadPool.threadCount=5
Spring配置如下所示:
<bean id="quartz2" class="org.apache.camel.component.quartz2.QuartzComponent">
<property name="propertiesFile" value="quartz.properties"/>
</bean>
<route>
<from uri="quartz2://myTrigger?job.name=myJob&job.durability=true&stateful=true&trigger.repeatInterval=60000&trigger.repeatCount=-1"/>
<to uri="bean:myBean?method=retrieve"/>
....
在应用程序关闭时,Quartz触发器状态更改为PAUSED,并且在下一次启动后再也没有更改为WAITING,因此从未再次触发。
是否可以在应用程序重启后以某种方式配置quartz / camel以恢复触发?
实际上这种行为与指南中的声明相矛盾:
如果您在群集模式下使用Quartz,例如JobStore是集群的。然后,当节点停止/关闭时,Quartz2组件不会暂停/删除触发器。这允许触发器继续在集群中的其他节点上运行。
答案 0 :(得分:0)
如果您想以
动态暂停/恢复路线org.apache.camel.impl.ThrottlingRoutePolicy
然后建议使用org.apache.camel.SuspendableService
,因为它允许细粒度的暂停和恢复操作。并且在调用这些操作时使用org.apache.camel.util.ServiceHelper
来辅助这些操作,因为它支持常规org.apache.camel.Service instances
的后备。
有关详细信息,请参阅RoutePolicy和Quartz Component
希望这个帮助