我尝试通过导入
@Scheduled(fixedDelay = 10000)
类来实现这个 org.springframework.scheduling.annotation.Scheduled
,它在构建时出现以下错误:
java.lang.IllegalArgumentException:无效的@Scheduled 方法“monitorRoutesProcessing”:不支持“fixedDelay”
Quarkus 有没有办法实现固定延迟的调度器? 我知道我们可以使用 @every
实现固定费率Quarkus 的等价物是 @io.quarkus.scheduler.Scheduled。这是来自官方指南的示例:
package org.acme.scheduler;
import java.util.concurrent.atomic.AtomicInteger;
import jakarta.enterprise.context.ApplicationScoped;
import io.quarkus.scheduler.Scheduled;
import io.quarkus.scheduler.ScheduledExecution;
@ApplicationScoped
public class CounterBean {
private AtomicInteger counter = new AtomicInteger();
public int get() {
return counter.get();
}
@Scheduled(every="10s")
void increment() {
counter.incrementAndGet();
}
@Scheduled(cron="0 15 10 * * ?")
void cronJob(ScheduledExecution execution) {
counter.incrementAndGet();
System.out.println(execution.getScheduledFireTime());
}
@Scheduled(cron = "{cron.expr}")
void cronJobWithExpressionInConfig() {
counter.incrementAndGet();
System.out.println("Cron expression configured in application.properties");
}
}
另请参阅参考指南了解更多信息