前提:
通过前端传来的字符串如8:00去调度定时任务,并且每个公司下的时间都可以不一样
简单理解:
可以分为
1:一个定时任务要有多个不一样的时间。
2:也可以理解一个定时任务定时去调度,但中间业务去判断时间是否满足,是否去执行。(需要)
(2):尽管我们第一回合失败了,但至少也不是完败,别气馁。
于是就有了下面的代码
一个定时任务每隔5分钟去查找是否满足执行的条件
@Async
@Scheduled(cron = "0 0/5 * * * ?")
public void autoAllAlarmEventOrder(){
//分布式锁,防止多个服务同时执行
RLock lock = redissonClient.getLock("字符串");
if(lock.tryLock()){
try {
alarmEventService.autoAllAlarmEventOrder();
} finally {
lock.unlock();
}
}
}
//service
public void autoAllAlarmEventOrder(){
//从数据库获取不同公司的定时任务的字符串
//然后循环去对比时间
for (:) {
//当前时间在定时任务的范围内
String s = DateUtil.timeHour(new Date());
//获取当前时间与数据库时间字符串相差
int time = DateUtil.subtractMinute(DateUtil.timeHour(value), DateUtil.timeHour(s));
if (time <= 5 && time > 0) {
//业务
}
}
}