Tod*_*arp 5 java groovy spring scheduled-tasks quartz-scheduler
我正在使用Quartz with Spring在每个月的第一天午夜运行特定任务.我已经通过将我的服务器日期和时间设置为当月最后一天的11:59来测试该作业,启动服务器并在转到12:00时观察任务运行,但我担心的情况是服务器(无论出于何种原因)可能不会在本月的第一天午夜运行.
我认为Quartz中的失火处理会关心这一点,但也许我错了吗?
任何人都可以告诉我如何处理这个问题?我真的不想创建一个每隔'x'秒/分钟/小时运行的作业,并检查是否需要运行该作业,如果我可以避免它.
我也很好奇为什么我没有看到任何与Quartz相关的日志信息,但这是次要问题.
这是我的任务弹簧配置:
<bean id="schedulerService" class="com.bah.pams.service.scheduler.SchedulerService">
<property name="surveyResponseDao" ref="surveyResponseDao"/>
<property name="organizationDao" ref="organizationDao"/>
</bean>
<bean name="createSurveyResponsesJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.bah.pams.service.scheduler.jobs.CreateSurveyResponsesJob"/>
<property name="jobDataAsMap">
<map>
<entry key="schedulerService" value-ref="schedulerService"/>
</map>
</property>
</bean>
<!-- Cron Trigger -->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="createSurveyResponsesJob"/>
<property name="cronExpression" value="0 0 0 1 * ? *"/>
<!--if the server is down at midnight on 1st of month, run this job as soon as it starts up next -->
<property name="misfireInstructionName" value="MISFIRE_INSTRUCTION_FIRE_ONCE_NOW"/>
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="autoStartup" value="true"/>
<property name="quartzProperties">
<props>
<prop key="org.quartz.jobStore.class">org.quartz.simpl.RAMJobStore</prop>
<prop key="org.quartz.jobStore.misfireThreshold">60000</prop>
</props>
</property>
<property name="jobDetails">
<list>
<ref bean="createSurveyResponsesJob"/>
</list>
</property>
<property name="triggers">
<list>
<ref bean="cronTrigger"/>
</list>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
MISFIRE_INSTRUCTION_FIRE_ONCE_NOW 用于您提到的目的,如果您怀疑服务器关闭,您绝对应该将作业保留在 JVM 内存之外(例如:使用 JDBCJobStore 而不是 RAMJobStore)。
RAMJobStore 快速且轻量,但当进程终止时所有调度信息都会丢失。
http://quartz-scheduler.org/documentation/quartz-2.x/configuration/ConfigRAMJobStore
JDBCJobStore 用于在关系数据库中存储调度信息(作业、触发器和日历)。
http://quartz-scheduler.org/documentation/quartz-2.x/configuration/ConfigJobStoreTX
希望有帮助。
| 归档时间: |
|
| 查看次数: |
4740 次 |
| 最近记录: |