根据this,注释中的值是正确的,但是如果您查看updating-the-application-configuration-file段落,则该指南正在使用文件application.properties。
由于您使用的是 YAML 文件,我怀疑您没有包含所需的依赖项(已测试版本 1.9.0.Final 和 1.9.2.Final):
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-config-yaml</artifactId>
<version>1.9.2.Final</version>
</dependency>
与Spring相反,这个依赖必须在pom.xm文件中显式列出。
此外,我会以这种方式更改 YAML 文件:
cron:
scheduler:
expr: "0 0/60 * * * ?"
免责声明:我没有设法复制您的错误。提供的细节不够。
已编辑
请注意,cron 表达式本身是有问题的……'0/60' 没有意义。这是指定 cron 作业将发生的小时的分钟的部分,例如“0/40”表示希望在每小时的第 0 分钟和第 40 分钟执行作业,例如在 00:00, 00:40,..., 14:00, 14:40, ... 23:00 和 23:40。
所以你的表达式说要在 XX:00 和 XX:60 执行不存在的作业。
如果您在 Minutes 行中查看Cron Trigger Tutorial 的官方文档,它会明确指出接受的值在 [0-59] 范围内
示例
请注意以下(工作) java 类:
package com.acme.scheduled;
import io.quarkus.scheduler.Scheduled;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.concurrent.TimeUnit;
public class ScheduledActions {
private static final Logger LOGGER = LoggerFactory.getLogger(ScheduledActions.class);
private static final int lengthFrame = 120;
private static final int lengthText = lengthFrame - 4;
private static final String FRAME = StringUtils.repeat('*', lengthFrame);
private void printFancyText(final String text) {
final String centeredText;
if(text.length() > lengthText ) {
centeredText = StringUtils.abbreviate(text,"...", lengthText);
} else if ( text.length() == lengthText) {
centeredText = text;
} else {
centeredText = StringUtils.center(text, lengthText);
}
LOGGER.info(FRAME);
LOGGER.info("* {} *", centeredText);
LOGGER.info(FRAME);
}
@Scheduled(cron = "{cron.scheduler.expr}")
public void cronExpressionTrigger(){
this.printFancyText("Firing from statically defined cron expression. Triggering method 'cronExpressionTrigger'.");
}
@Scheduled(delay = 5, delayUnit = TimeUnit.SECONDS, every = "PT15S")
public void delayTrigger() {
this.printFancyText("Firing from delay express in seconds. Triggering method 'delayTrigger'.");
}
@Scheduled(every = "30s")
public void periodicTrigger(){
this.printFancyText("Firing from statically defined period. Triggering method 'periodicTrigger'.");
}
}
cron 表达式的值取自 application.yml 文件,定义如下:
cron:
scheduler:
expr: "0 0/1 * * * ?" # This works like a charm, with or without the '@' - I prefer with.
# expr: "0 0/60 * * * ?" >>> This does NOT work. It fails with error: java.lang.IllegalArgumentException: Period 60 not in range [0, 59]