Spring中的定时任务可以指定不同的Executor吗?
Can you specify different Executors for Scheduled tasks in Spring?
Spring 对所有 @Scheduled
任务使用相同的执行器。默认情况下,它有 1 个线程,但您可以创建一个包含更多线程的自定义线程。
情况:我有2种类型的工作要安排:
- long 运行ning 后台作业:不一定需要按时开始,不希望它们同时 运行 而且绝对不想要更多比每个作业 运行ning 一次(解决方案:使用有限线程池的固定延迟)
- 频繁、短暂的 运行ning 作业需要 运行 按计划完成。 (解决方案:使用
@Async
的固定汇率)
问题:有限池上的慢作业直接反对运行宁别人@Async
理想情况下,我会有 2 个独立的执行者,我可以分配他们做类似
的事情
@Scheduled(delayedRate=600000, executor="longRunningExecutor")
和 @Scheduled(fixedRate=5000, executor="rightNowExecutor")
但我找不到任何支持这样的东西。
如何确保长时间的 运行ning 作业不会占用线程池并阻塞当前的作业?
看来答案是"they're working on it"https://github.com/spring-projects/spring-framework/issues/20818
Spring 对所有 @Scheduled
任务使用相同的执行器。默认情况下,它有 1 个线程,但您可以创建一个包含更多线程的自定义线程。
情况:我有2种类型的工作要安排:
- long 运行ning 后台作业:不一定需要按时开始,不希望它们同时 运行 而且绝对不想要更多比每个作业 运行ning 一次(解决方案:使用有限线程池的固定延迟)
- 频繁、短暂的 运行ning 作业需要 运行 按计划完成。 (解决方案:使用
@Async
的固定汇率)
问题:有限池上的慢作业直接反对运行宁别人@Async
理想情况下,我会有 2 个独立的执行者,我可以分配他们做类似
@Scheduled(delayedRate=600000, executor="longRunningExecutor")
和 @Scheduled(fixedRate=5000, executor="rightNowExecutor")
但我找不到任何支持这样的东西。
如何确保长时间的 运行ning 作业不会占用线程池并阻塞当前的作业?
看来答案是"they're working on it"https://github.com/spring-projects/spring-framework/issues/20818