feat(scheduler): 增加指定时间范围内在指定集群运行/不运行
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user