在指定的出现次数后如何停止石英cron调度程序?

问题描述 投票:2回答:1

我要求用户在停止任何工作之前可以设置结束日期或可以设置特定的出现次数。

例如,

考虑到我必须将短信发送到特定号码,并且应该从现在开始,并且短信将每5分钟发送一次。

现在基于用户的选择,上述作业将在特定时间或n次出现后停止。

而且我正在使用石英的cron调度程序。

现在在特定日期时间停止它很容易,我已经按照以下方式完成了它;

    trigger = TriggerBuilder.newTrigger()
                            .startAt(startDateObj)
                            .endAt(endDate)
                            .withIdentity(uniqueID, "group1")
                            .withSchedule(
                                    CronScheduleBuilder.cronSchedule(cronString)
                                )
                            .build();

但是,如果我在n次出现后不得不停止它,该怎么办?我知道可以通过简单的时间表来完成;

simpleSchedule().withRepeatCount(1).withIntervalInSeconds(15)

但是对于cron调度程序该怎么做?由于某些原因,除了cron之外,我无法再使用任何其他类型的日程表。

任何帮助对我都很好。

请让我知道是否需要更多数据。

提前感谢。

java cron quartz-scheduler
1个回答
0
投票

您可以使用endDate方法计数computeEndTimeToAllowParticularNumberOfFirings()。 (不过那个名字!)。请参见以下示例:

CronTrigger trigger = new Trigger()
                           .withIentity("some_id")
                           .withSchedule(buildCronScheduler("some_cron_exp"))
                           .build();
Date endDate = TriggerUtils.computeEndTimeToAllowParticularNumberOfFirings(
                    (OperableTrigger) trigger,
                    new BaseCalendar(Calendar.getInstance().getTimeZone()),
                    repeatCount);
trigger = trigger.getTriggerBuilder().endAt(endDate).build();
© www.soinside.com 2019 - 2024. All rights reserved.