java - 如何配置多个 Quartz 单线程作业

标签 java spring quartz-scheduler

我有 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>

最佳答案

我的建议是您使用不同的 SchedulerFactoryBean。

关于java - 如何配置多个 Quartz 单线程作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6980840/

相关文章:

java - 为什么 Quartz 说这个 cron 表达式无效?

deployment - 如何在ear部署上自动执行 session bean的方法?

java - 将 Hibernate session 与 quartz 一起使用

java - 在 Java 中使用 Regex 解析 CSV 文件

java - 如何在linux机器中导入jar文件

java - 在 Spring-Hibernate Web 应用程序中编写 Java 应用程序

带有 Postgres 的 Spring Boot 应用程序 : indexes not being used during first use

java - 如何使用 Spring 设置 RESTful API 以使用 Controller 和模型发送 JSON 响应

java - 无服务器群组消息传递(聊天)Xmpp

java - 在中央找不到 Maven Artifact