CommandScheduler 是容错的一部分,你需要的是ScheduledThreadPoolSupplier。
使用响应式 api 使其更漂亮(适用于 Helidon 2.x 的两种风格):
ScheduledThreadPoolSupplier scheduledThreadPoolSupplier =
ScheduledThreadPoolSupplier.builder()
.threadNamePrefix("scheduled-test-")
.corePoolSize(2)
.build();
Multi.interval(5, TimeUnit.SECONDS, scheduledThreadPoolSupplier.get())
.map(l -> "invocation number " + l)
// max number of invocations
.limit(5)
.forEach(s -> System.out.println("Scheduled " + s))
.await();
scheduledThreadPoolSupplier.get().shutdown();
> Scheduled invocation number 0
> Scheduled invocation number 1
> Scheduled invocation number 2
> Scheduled invocation number 3
> Scheduled invocation number 4
但请注意!此作业将安排在您服务的每个实例上,我建议先查看 Kubernetes CronJobs。
https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/
编码愉快!