私は月の最初の日の真夜中に特定のタスクを実行するために、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>