cron - QUARTZ : Both, 不支持星期几和月份参数

标签 cron quartz-scheduler

我正在使用 cron-utils用于调度目的的库。当我同时提供 DoM 和 DoW 时,我得到以下异常

Both, a day-of-week AND a day-of-month parameter, are not supported.



我发现这个异常符合 QUARTZ 规范。
我想知道为什么不支持?因为它似乎是在“ 9 月 5 日只有在星期日 ”上运行类似的有效要求
我是否需要编写两个单独的表达式并取其交集?
这个问题的推荐解决方案是什么?

最佳答案

Quartz 不支持该功能。但是,这可以在 cron-utils 中实现。使用自定义 cron 定义。为了镜像Quartz的相同定义,但没有关于月份和星期几的限制,你可以这样做:

CronDefinition cronDefinition =
    CronDefinitionBuilder.defineCron()
        .withSeconds().withValidRange(0, 59).and()
        .withMinutes().withValidRange(0, 59).and()
        .withHours().withValidRange(0, 23).and()
        .withDayOfMonth().withValidRange(1, 31).supportsL().supportsW().supportsLW().supportsQuestionMark().and()
        .withMonth().withValidRange(1, 12).and()
        .withDayOfWeek().withValidRange(1, 7).withMondayDoWValue(2).supportsHash().supportsL().supportsQuestionMark().and()
        .withYear().withValidRange(1970, 2099).withStrictRange().optional().and()
        .instance();

CronParser parser = new CronParser(cronDefinition);
parser.parse("0 0 0 3 * MON#1");

关于cron - QUARTZ : Both, 不支持星期几和月份参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47775883/

相关文章:

java - 在 Quartz 中使用 JobStoreCMT - 防止自动提交

java - Quartz Cron 表达式问题

java - 运行错过的 Quartz 作业

cron - Spring 时间表 - 一个月的最后一天不工作

php - 如何检查php脚本是否已经在运行

perl - 通过 cron 运行 perl-script kpcli 失败

java - quartz API - 了解执行的作业

java - 如何将 Spring 计划任务配置为在具有特定延迟的时间范围内运行?

node.js - cron 作业可以每 'x' 秒运行一次吗

java - Quartz作业总是在同一个节点上执行