Как настроить несколько однопоточных заданий Quartz - PullRequest
1 голос
/ 08 августа 2011

У меня есть 2 разных задания, которые должны запускаться одновременно.

Я бы хотел дать отдельный поток для каждого из них.Конечно, я могу настроить Quartz на использование только одного потока, установив свойство

org.quartz.threadPool.threadCount = 1

Но это означает, что оба задания будут использовать один и тот же поток.Если я установлю threadCount = 2, вполне возможно, что первое задание будет запущено дважды, а другое будет ждать.

Итак, как я могу независимо запускать эти задания в отдельных потоках?

Моя конфигурация Spring такая:

<bean name="Job1" class="org.springframework.scheduling.quartz.JobDetailBean">
  <property name="jobClass" value="test.job1"/>
</bean>

<bean id="CronTrigger1" class="org.springframework.scheduling.quartz.CronTriggerBean">
  <property name="jobDetail" ref="Job1"/>
  <property name="cronExpression" value="0 * 6-21 * * ?" />
</bean>

<bean name="Job2" class="org.springframework.scheduling.quartz.JobDetailBean">
  <property name="jobClass" value="test.job2"/>
</bean>

<bean id="CronTrigger2" class="org.springframework.scheduling.quartz.CronTriggerBean">
  <property name="jobDetail" ref="Job2"/>
  <property name="cronExpression" value="0 * 6-21 * * ?" />
</bean>

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean" destroy-method="destroy">
  <property name="waitForJobsToCompleteOnShutdown">
    <value>true</value>
  </property>
  <property name="configLocation">
    <value>classpath:quartz.properties</value>
  </property>
  <property name="triggers">
    <list>
      <ref bean="CronTrigger1"/>
      <ref bean="CronTrigger2"/>
    </list>
  </property>
</bean>

Ответы [ 2 ]

0 голосов
/ 14 октября 2014

Я рекомендую аннотировать свой класс работы с помощью @DisallowConcurrentExecution. См. Кварцевая документация .

0 голосов
/ 10 августа 2011

Я рекомендую вам использовать разные SchedulerFactoryBeans.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...