创建一个在一周中的特定日期执行的触发器(Quartz Scheduler API)

发布于 2024-12-29 00:19:08 字数 554 浏览 2 评论 0原文

我正在尝试在 Quartz Scheduler API 中构建一个触发器,该触发器应该按照以下标准执行。

  1. 从特定日期(2012 年 1 月 25 日)开始
  2. 在预定时间(上午 08 点)开始
  3. 每周
  4. 。可以安排每隔一周或每 3 周(如果不是每周)
  5. 在一周中的这些特定日子(星期一、星期二、星期五等)

我创建了以下表达式

newTrigger().withIdentity(cronTriggerDTO.getTiggerId(), "simpleGroup")
        .startAt(getTriggerExecutionDate(cronTriggerDTO))
        .withSchedule(calendarIntervalSchedule().withIntervalInWeeks 
                  (cronTriggerDTO.getWeeklyInterval())).build();

,但我很困惑应该如何添加条件来执行此触发器在一周中的特定日子

I am trying to build a Trigger in Quartz Scheduler API which should get executed with following criteria.

  1. Start on particular date (Jan 25, 2012)
  2. Start at predefined time (08.00.00 AM)
  3. Every Week.
  4. Can be scheduled for alternate week or every 3 week (if not every week)
  5. On these particular days of week (Monday,Tuesday,Friday etc)

I have created the following expression

newTrigger().withIdentity(cronTriggerDTO.getTiggerId(), "simpleGroup")
        .startAt(getTriggerExecutionDate(cronTriggerDTO))
        .withSchedule(calendarIntervalSchedule().withIntervalInWeeks 
                  (cronTriggerDTO.getWeeklyInterval())).build();

but I am confused how I should add the condition to execute this trigger on particular days of week

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

岁月静好 2025-01-05 00:19:08

我会使用 CronScheduleBuilder.cronSchedule(String cronExpression) ,如下所示:

newTrigger().withIdentity(cronTriggerDTO.getTiggerId(), "simpleGroup")
    .startAt(getTriggerExecutionDate(cronTriggerDTO))
    .withSchedule(CronScheduleBuilder.cronSchedule("0 0 * * 1,2,5"))
    .build();

I'd use CronScheduleBuilder.cronSchedule(String cronExpression), like this:

newTrigger().withIdentity(cronTriggerDTO.getTiggerId(), "simpleGroup")
    .startAt(getTriggerExecutionDate(cronTriggerDTO))
    .withSchedule(CronScheduleBuilder.cronSchedule("0 0 * * 1,2,5"))
    .build();
中二柚 2025-01-05 00:19:08

使用 DailyTimeIntervalScheduleBuilder

Set daysOfWeek = new HashSet();
daysOfWeek.add(1);
daysOfWeek.add(2);
daysOfWeek.add(5);

newTrigger().withIdentity(cronTriggerDTO.getTiggerId(), "simpleGroup")
    .startAt(getTriggerExecutionDate(cronTriggerDTO))
    .withSchedule(dailyTimeIntervalSchedule()
       .onDaysOfTheWeek(daysOfWeek)
          .startingDailyAt(new TimeOfDay(8,0)))
    .build();

Use DailyTimeIntervalScheduleBuilder

Set daysOfWeek = new HashSet();
daysOfWeek.add(1);
daysOfWeek.add(2);
daysOfWeek.add(5);

newTrigger().withIdentity(cronTriggerDTO.getTiggerId(), "simpleGroup")
    .startAt(getTriggerExecutionDate(cronTriggerDTO))
    .withSchedule(dailyTimeIntervalSchedule()
       .onDaysOfTheWeek(daysOfWeek)
          .startingDailyAt(new TimeOfDay(8,0)))
    .build();
忘年祭陌 2025-01-05 00:19:08

简单方法..,希望这对您有帮助。

  int second = 53;//prepare from the time selected from UI(fire time)
  int minute=0;
  int hour=8;
  String dayOfWeek="1,3";//prepare it from the days you get from UI(give check box values as 1 for SUN,....)

  String cronExpression = String.format("%d %d %d ? * %s",second,minute , hour, dayOfWeek);

         newTrigger()
    .withIdentity(cronTriggerDTO.getTiggerId(), "simpleGroup")//
    .withSchedule(cronSchedule(cronExpression)//
    .startAt(getTriggerExecutionDate(cronTriggerDTO))
    .build();

使用 cron 触发器,下面是准备 cron 表达式然后安排作业的

Use cron trigger and below is the simple way to prepare cron expression

  int second = 53;//prepare from the time selected from UI(fire time)
  int minute=0;
  int hour=8;
  String dayOfWeek="1,3";//prepare it from the days you get from UI(give check box values as 1 for SUN,....)

  String cronExpression = String.format("%d %d %d ? * %s",second,minute , hour, dayOfWeek);

         newTrigger()
    .withIdentity(cronTriggerDTO.getTiggerId(), "simpleGroup")//
    .withSchedule(cronSchedule(cronExpression)//
    .startAt(getTriggerExecutionDate(cronTriggerDTO))
    .build();

Then schedule the job..,hope this helps you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文