首页 > 解决方案 > 将自定义执行器与石英调度库一起使用

问题描述

我正在使用石英库,主要用于安排将在特定时间永久运行的多个任务。我有一个定制的执行器(一个重试执行器,它在失败的情况下重新安排一个任务指定的次数(重试是可定制的)。我想知道是否有办法设置石英来使用这个定制的执行器?目前我是在 Job 的 execute 方法中使用Jobie 调用中的 executor 。executor.execute()

标签: java-8quartz-schedulerexecutorservice

解决方案


指南中仅说明了如何配置您自己的 ThreadPool

微调调度器

您还可以实现 Quatz 的接口ThreadExecutor或调整您的“RetryExecutor”实现来做到这一点。

然后它可以作为组件传递setThreadExecutorQuartzSchedulerResources用于配置的组件QuartzScheduler- Quartz 的核心。

保持作业隔离

不鼓励在作业的执行方法中修改调度或执行其他作业。这个控制流被 Quartz 保留在工作之外。这是调度程序职责的一部分。因此,您当前的解决方案:

  • 在Job的execute方法中使用Jobie调用中的executorexecutor.execute()

可以影响调度程序本身的正确功能。

从作业中控制重试

可能有几种方法可以处理 Quartz 中的重试。在 Stackoverflow 中搜索[quartz-scheduler] retry

  • 自动重试失败的作业
  • 基于计数的重试,增加重试之间的延迟等。

这个问题解释了一些: Quartz retry when failure


推荐阅读