java-8 - 将自定义执行器与石英调度库一起使用
问题描述
我正在使用石英库,主要用于安排将在特定时间永久运行的多个任务。我有一个定制的执行器(一个重试执行器,它在失败的情况下重新安排一个任务指定的次数(重试是可定制的)。我想知道是否有办法设置石英来使用这个定制的执行器?目前我是在 Job 的 execute 方法中使用Job
ie 调用中的 executor 。executor.execute()
解决方案
指南中仅说明了如何配置您自己的 ThreadPool。
微调调度器
您还可以实现 Quatz 的接口ThreadExecutor
或调整您的“RetryExecutor”实现来做到这一点。
然后它可以作为组件传递setThreadExecutor
给QuartzSchedulerResources
用于配置的组件QuartzScheduler
- Quartz 的核心。
保持作业隔离
不鼓励在作业的执行方法中修改调度或执行其他作业。这个控制流被 Quartz 保留在工作之外。这是调度程序职责的一部分。因此,您当前的解决方案:
- 在Job的execute方法中使用
Job
ie调用中的executorexecutor.execute()
可以影响调度程序本身的正确功能。
从作业中控制重试
可能有几种方法可以处理 Quartz 中的重试。在 Stackoverflow 中搜索[quartz-scheduler] retry
:
- 自动重试失败的作业
- 基于计数的重试,增加重试之间的延迟等。
这个问题解释了一些: Quartz retry when failure
推荐阅读
- swift - 如何在 UITabelViewCell 类中访问正确的单元格宽度?
- c# - 在发布时设置/获取 DeliveryTag RabbitMQ
- apache-kafka - 具有 Kafka 流的自定义状态存储 (RocksDb) 是否有保留策略?
- powershell - Get-Package 命令包含 xml 字符串 - 需要转换为 PSObject
- python - 应用函数将数组除以向量
- javascript - 如何判断一个特定模块是 CommonJS 模块还是 ES6 模块?
- c++ - 如何将 int** 转换为 void**?
- java - 当我使用搜索编辑文本和过滤方法时,为什么我的应用程序会崩溃
- makefile - LDFLAGS 和 ldflags-y 的区别
- python - 我们是否有用于板球比赛得分的良好 API?