程序化调度——什么是最好的方法?

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 扩展时)。