【问题标题】:Spring boot Quartz to skip some jobsSpring boot Quartz 跳过一些工作
【发布时间】:2021-10-12 19:30:27
【问题描述】:

我使用 spring boot + maven 多模块项目。我正在使用集群感知 Quartz 配置,因此作业详细信息存储在数据库中。可以说,2个Spring boot maven模块(项目)正在使用quartz,但我希望每个模块运行它都是自己的工作,每个模块都不同。在这种情况下,当我启动一个模块时,它实际上也尝试从其他模块运行作业,因为 Quartz 引擎正在读取要从数据库运行的作业。那么如何在每个模块中指定仅运行与 at 模块相关的特定作业? 一种方法是为每个模块设置不同的表前缀。有没有其他方法可以在 2 个不同的模块之间使用相同的石英表,但每个模块决定运行哪些作业?

【问题讨论】:

    标签: spring-boot quartz-scheduler


    【解决方案1】:

    我也差不多。我的解决方案是: 作业 A 将标志写入作业“running_by”作业 A 旁边的数据库表中,完成后,它会删除该标志。

    所以 JobB 检查这个 Job 是否已经有一个标志。如果不是,它将继续,如果是,则跳过此作业,因为 JobA 已经在运行它。

    【讨论】:

      【解决方案2】:

      在quartz.properties 中配置一个属性 org.quartz.jobStore.isClustered = true 可以让石英在集群模式下工作

      【讨论】:

      • 对不起,这个答案与我的问题无关。我的作业已经保存在数据库中,所以它是集群感知的
      • 每个模块使用自己的数据库
      • 这不是我的要求
      猜你喜欢
      • 2017-06-25
      • 2017-10-16
      • 2018-06-17
      • 2016-10-10
      • 1970-01-01
      • 1970-01-01
      • 2018-12-09
      • 1970-01-01
      • 2021-04-05
      相关资源
      最近更新 更多