如何使用spring&;控制quartz调度器运行;weblogic部署计划
我有一个配置了spring的quartz调度程序,它有五个触发器 这将触发适当的工作。我要找的是有国旗 可以用来禁用开发和测试环境中的作业,以及 在生产中启用。下面是我的配置 石英调度器的applicationContext.xml如何使用spring&;控制quartz调度器运行;weblogic部署计划,spring,quartz-scheduler,weblogic12c,Spring,Quartz Scheduler,Weblogic12c,我有一个配置了spring的quartz调度程序,它有五个触发器 这将触发适当的工作。我要找的是有国旗 可以用来禁用开发和测试环境中的作业,以及 在生产中启用。下面是我的配置 石英调度器的applicationContext.xml 群集调度程序 自动的 60000 org.quartz.impl.jdbcjobstore.JobStoreTX org.quartz.impl.jdbcjobstore.oracle.weblogic.WebLogicOracleDelegate qrtz_ 真
群集调度程序
自动的
60000
org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.impl.jdbcjobstore.oracle.weblogic.WebLogicOracleDelegate
qrtz_
真的
20000
org.quartz.siml.SimpleThreadPool
7.
5.
Cron触发器:
我尝试的是:我尝试将cron表达式设置为feb31,以便
它永远不会运行,但这需要更改代码或编写脚本
在数据库中运行。
我需要的:在我的weblogic部署计划中需要一个标志来打开或关闭quartz调度程序
如果需要防止触发所有作业,那么在已配置的环境中(即在dev/test中使用autoStartup=false,在prod中使用autoStartup=true),不能让调度程序保持在停止状态吗?实际上,我并不清楚如何在prod上启动调度程序,因为您似乎已经拥有autoStart=false 如果以上是不可行的,您有几个选项:
顺便说一句:如果你想要一个可视化工具来帮助你暂停/取消暂停调度器、作业和触发器等,请查看。免责声明:我是此工具的主要开发人员。感谢jan的回复。我是quartz调度的新手,据我所知,调度程序是基于CRON触发器启动的。我已经尝试了选项3,我要寻找的是一个启用或禁用调度程序的标志。我应该能够做到这一点,而无需进行任何代码更改或进行新的部署。您实际如何启动调度程序?我问,因为您有autoStart=false,这意味着除非您在其他地方启动调度程序,否则不应该启动它?我认为您可以简单地使用SpringPropertyPlaceHolderConfigure,为各个环境加载不同的属性文件,然后使用:。quartz.autoStart可以是JVM系统属性,也可以是位于PropertyPlaceHolderConfigure加载的属性文件中的属性//来自spring文档setAutoStart:设置初始化后是否自动启动计划程序。默认值为“true”;将此设置为“false”以允许手动启动。我将手动启动解释为配置触发器以启动调度程序在特定时间运行。我可能错了Rohith不不是这样的。触发器不会启动计划程序在特定时间运行。触发器用于启动作业。调度程序是一个正在运行(触发器启动作业)、暂停(触发器暂停且不启动作业)或停止(调度程序内部未发生任何事件,从未触发任何作业)的组件。问题已解决:感谢您的说明,我的应用程序在servletcontextlistener类中启动调度程序,我在其中创建了一个标志,它被weblogic部署计划覆盖。
<!-- ====================================================================== -->
<!-- ========================== QUARTZ SCHEDULER ========================== -->
<!-- ====================================================================== -->
<bean id="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false">
<property name="applicationContextSchedulerContextKey" value="applicationContext" />
<property name="autoStartup" value="false" />
<property name="dataSource" ref="dataSource"/>
<property name="transactionManager" ref="transactionManager"/>
<property name="overwriteExistingJobs" value="true"/>
<property name="waitForJobsToCompleteOnShutdown" value="true"/>
<property name="triggers">
<list>
<!-- if you remove a trigger, make sure you
also remove the trigger
from the QRTZ_TRIGGERS table.
-->
<ref bean="Trigger1" />
<ref bean="Trigger2" />
<ref bean="Trigger3" />
<ref bean="Trigger4"/>
<ref bean="Trigger5"/>
</list>
</property>
<property name="quartzProperties">
<props>
<prop key="org.quartz.scheduler.instanceName">ClusteredScheduler</prop>
<prop key="org.quartz.scheduler.instanceId">AUTO</prop>
<prop key="org.quartz.jobStore.misfireThreshold">60000</prop>
<prop key="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.JobStoreTX</prop>
<prop key="org.quartz.jobStore.driverDelegateClass">org.quartz.impl.jdbcjobstore.oracle.weblogic.WebLogicOracleDelegate</prop>
<prop key="org.quartz.jobStore.tablePrefix">qrtz_</prop>
<prop key="org.quartz.jobStore.isClustered">true</prop>
<prop key="org.quartz.jobStore.clusterCheckinInterval">20000</prop>
<prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
<!-- Set to 7 to correspond to the 7 nightly jobs that run in the morning -->
<prop key="org.quartz.threadPool.threadCount">7</prop>
<prop key="org.quartz.threadPool.threadPriority">5</prop>
</props>
</property>
</bean>
<bean id="Trigger1" class="org.springframework.scheduling.quartz.CronTriggerBean" scope="prototype">
<property name="jobDetail">
<bean name="nightlyJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="My custom class that extends QuartzJobBean"/>
<property name="group" value="nightly"/>
<property name="requestsRecovery" value="true" />
</bean>
</property>
<!-- Cron expression to run job every 10 minutes for testing -->
<!-- <property name="cronExpression" value="0 0/10 * * * ?"/> -->
<!-- Cron expression that runs at 2:10AM -->
<property name="cronExpression" value="0 10 2 * * ?"/>
</bean>