feat(scheduler): 增加指定时间范围内在指定集群运行/不运行

This commit is contained in:
v-zhangjc9
2024-04-26 20:04:05 +08:00
parent befb383bee
commit 9913943a27
2 changed files with 22 additions and 2 deletions

View File

@@ -4,6 +4,7 @@ import com.cronutils.model.CronType;
import com.cronutils.model.definition.CronDefinitionBuilder;
import com.cronutils.model.time.ExecutionTime;
import com.cronutils.parser.CronParser;
import java.time.ZoneId;
import java.time.ZonedDateTime;
/**
@@ -15,14 +16,16 @@ import java.time.ZonedDateTime;
public class DatetimeLimit implements AvailableStrategy {
private static final CronParser PARSER = new CronParser(CronDefinitionBuilder.instanceDefinitionFor(CronType.QUARTZ));
private final Boolean runInPeriod;
private final ExecutionTime execution;
public DatetimeLimit(String cron) {
public DatetimeLimit(Boolean runInPeriod, String cron) {
this.runInPeriod = runInPeriod;
this.execution = ExecutionTime.forCron(PARSER.parse(cron));
}
@Override
public boolean available() {
return execution.isMatch(ZonedDateTime.now());
return runInPeriod == execution.isMatch(ZonedDateTime.now().withNano(0));
}
}