我有一个配置有弹簧的石英调度器,它有五个触发器,可以触发适当的作业。我正在寻找的是具有可用于在开发和测试环境中禁用作业并在生产中启用的标志。下面是我的applicationContext.xml中用于石英调度程序的配置。
<!-- ====================================================================== -->
<!-- ========================== 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>
Cron触发器:
<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>
我尝试过的事情:我尝试将cron表达式设置为feb31,以使其永远不会运行,但是这需要更改代码或在数据库中运行脚本。我需要的是:在我的weblogic部署计划中需要一个标志,该标志将打开或关闭Crystal Scheduler
如果您需要阻止所有作业触发,您是否不能仅在已配置的环境中使调度程序处于停止状态(即在dev / test上使用autoStartup = false,在prod上使用autoStartup = true)?对我来说,实际上还不清楚如何在prod上启动调度程序,因为您似乎已经具有autoStart = false。
如果以上都不可行,则有几种选择:
对于个别环境,使用schedulerBean分隔(部分)Spring上下文。开发/测试的上下文将包含空的作业/触发器列表。然后,您可以使用Spring配置文件根据您可能想到的任何条件(例如,如果使用.devel / .test / * 。prod,某些配置值,JVM sys属性等,则为域后缀)来选择适用的上下文。
实现SchedulerListener并使其schedulerStarted方法暂停整个调度程序,或暂停dev / test上的所有作业组。
实现一个TriggerListener并使其vetoJobExecution始终对dev / test返回true,对prod返回false。
顺便说一句:如果您想要一个可视化工具来帮助您暂停/取消调度程序,作业和触发器等,请查看QuartzDesk。免责声明:我是该工具的主要开发人员。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句