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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.lanyuanxiaoyao.service.scheduler;
|
||||
|
||||
import com.lanyuanxiaoyao.service.scheduler.quartz.distribute.strategy.AvailableStrategy;
|
||||
import com.lanyuanxiaoyao.service.scheduler.quartz.distribute.strategy.DatetimeLimit;
|
||||
|
||||
/**
|
||||
* @author lanyuanxiaoyao
|
||||
* @date 2024-04-26
|
||||
*/
|
||||
public class TestStrategy {
|
||||
public static void main(String[] args) {
|
||||
AvailableStrategy strategy = AvailableStrategy.and(
|
||||
new DatetimeLimit(false, "* * 7-19 28-30 4 ? 2024")
|
||||
);
|
||||
System.out.println(strategy.available());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user