我使用 JBeret 的 Quarkus 实现,并希望在当天晚些时候安排一项工作。 所以我将 Scheduler 与 SchedulerExpression 一起使用。但是作业在调度后立即处理,而不是等到到达调度时间。我在tests中搜索,但所有测试都使用initialDelay,没有使用ScheduledExpression的测试。
` 属性properties =prepareJobCreation(currentJobName); property.setProperty(BatchParamName.FIRST_DAY_PREV_YEAR,firstDayPrevYear);
ScheduleExpression scheduleExpression = new ScheduleExpression();
scheduleExpression.dayOfMonth(17);
scheduleExpression.month(8);
scheduleExpression.year(2024);
scheduleExpression.hour(18);
scheduleExpression.minute(1);
scheduleExpression.second(0);
final JobScheduleConfig scheduleConfig = JobScheduleConfigBuilder.newInstance()
.jobName("jobname")
.scheduleExpression(scheduleExpression)
.jobParameters(properties)
.build();
jobScheduler.schedule(scheduleConfig);
` 在 2024 年 9 月 17 日 17:50 运行此代码时,作业在 17:50 处理,在 18:01 没有任何反应。
我还尝试将 9 放入月份(而不是 Java 中通常的 8)机器人,但也没有成功。
Quarkus JBeret 有可能做到这一点吗?还是我做错了?
我的猜测是 ScheduleExpression 是 ejb api 的一部分,它创建一个由 ejb 容器执行的 cron 计划,该计划可能不存在于您的 quarkus 中。