程序化调度——什么是最好的方法?
Programmatic scheduling - what is the best approach?
我需要根据一些配置数据启动多个独立的定期任务 - 预先不知道总数。比如我想查看不同区间不同参数的不同目录的内容,这里的列表和参数都是从配置中读取的。
在我看来,quarkus-scheduler 只能调度固定的、预先已知的方法。进行调度 dynamically/programmatically 的最佳方法是什么? vertx.setPeriodic
是正确的方法还是我应该以某种方式访问 Quartz?
是的,您可以注入托管 Vertx
实例并使用 Vertx.setPeriodic()
或 Vertx.setTimer()
(一次性计时器)。但请记住,处理程序是在事件循环线程上执行的,因此代码不应阻塞。如果您确实需要执行一些阻塞代码,请查看 Vertx.executeBlocking()
.
计划为类似的用例添加可注射托管 ScheduledExecutorService
。
还有 https://github.com/quarkusio/quarkus/issues/7246 - 这将允许您利用 Quartz API(当使用 quarkus-quartz
扩展时)。
我需要根据一些配置数据启动多个独立的定期任务 - 预先不知道总数。比如我想查看不同区间不同参数的不同目录的内容,这里的列表和参数都是从配置中读取的。
在我看来,quarkus-scheduler 只能调度固定的、预先已知的方法。进行调度 dynamically/programmatically 的最佳方法是什么? vertx.setPeriodic
是正确的方法还是我应该以某种方式访问 Quartz?
是的,您可以注入托管 Vertx
实例并使用 Vertx.setPeriodic()
或 Vertx.setTimer()
(一次性计时器)。但请记住,处理程序是在事件循环线程上执行的,因此代码不应阻塞。如果您确实需要执行一些阻塞代码,请查看 Vertx.executeBlocking()
.
计划为类似的用例添加可注射托管 ScheduledExecutorService
。
还有 https://github.com/quarkusio/quarkus/issues/7246 - 这将允许您利用 Quartz API(当使用 quarkus-quartz
扩展时)。