Как добавить startTime в springframework.scheduling.quartz.CronTriggerFactoryBean? - PullRequest
0 голосов
/ 02 ноября 2018

Нам нужно добавить startTime для планировщика с пружинным кварцем. Предположим, что приведенный ниже компонент представлен как CronTriggerFactoryBean. И нам нужно запустить планировщик через 5 дней после запуска сервера.

<bean id="sampleBean"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
  <bean class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject" ref="beanManager"/>
    <property name="targetMethod" value="beanMethod"/>
    <property name="concurrent" value="false"/>
  </bean>
</property>
<property name="cronExpression" value="0 0/30 * ? * SUN-FRI"/>
</bean>

И выше конфигурация планировщика не запускается при запуске сервера приложений. Это работает как

Давайте предположим, что сервер запускается в 12:03. Планировщик вызывает на 12:30, 13:00, 13:30, 14:00 ... соответственно.

Но нам нужен запуск сервера в 12:03, что означает, что планировщик должен запускаться один раз во время запуска сервера и в следующий раз 12:33, 13:03, 13:33, 14:03 ...

Будет ли это работать, когда мы установим startTime для этого компонента?

1 Ответ

0 голосов
/ 06 ноября 2018

Вы должны использовать SimpleTriggerFactoryBean вместо CronTriggerFactoryBean и определить триггер следующим образом:

<bean id="simpleTrigger"  class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
    <property name="jobDetail" ref="simpleJobDetail" />
    <property name="startDelay" value="1000" />
    <property name="repeatInterval" value="10000" />
</bean>

Это будет запускать задание каждые 10 секунд с начальной задержкой в ​​1 секунду с момента запуска сервера. Теперь отрегулируйте значения в соответствии с вашими требованиями.

...