Estoy usando Quartz con Spring para ejecutar una tarea específica a la medianoche del primer día del mes. He probado el trabajo estableciendo la fecha de mi servidor & para que sea 11:59 en el último día del mes, inicie el servidor y observe la ejecución de la tarea cuando se convierte en 12:00, pero me preocupan los casos en que servidor (por el motivo que sea) no se puede ejecutar a la medianoche del primer día del mes.Ejecutando un trabajo de cuarzo perdido
Supuse que el manejo de fallo de encendido en Quartz se encargaría de esto, pero tal vez estoy equivocado en eso?
¿Alguien me puede aconsejar sobre cómo podría manejar esto? Preferiría no crear un trabajo que se ejecute cada 'x' segundos/minutos/horas y verificar si necesito ejecutar el trabajo si puedo evitarlo.
También tengo curiosidad de por qué no veo ninguna información de registro relacionada con Quartz, pero ese es un problema secundario.
Aquí está mi configuración del resorte para la tarea:
<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>