1 需求
需求,由于现在定时任务较多,bash项目单机部署压力过大、效率太低,现需要多机部署,并且当前时刻只能有一个定时任务成功执行。
2 日志分析程序
public static void main(String[] args) throws Exception {
String fileName = "C:\\Users\\rosh\\Desktop\\logs\\上报日志.txt";
File file = new File(fileName);
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String line;
Map<String, List<String>> map = new HashMap<>();
//统计
while ((line = br.readLine()) != null) {
String dateTime = line.substring(0, 20);
List<String> list = map.getOrDefault(dateTime, new ArrayList<>());
list.add(line);
map.put(dateTime, list);
}
//分析
for (Map.Entry<String, List<String>> set : map.entrySet()) {
List<String> list = set.getValue();
if (list.size() >= 2) {
for (String str : list) {
System.out.println(str);
}
System.out.println("");
}
}
}
3 JAVA demo环境概述
启3个springboot项目,端口不一致,定时任务代码一致。
4 分布式锁解决方案
当前任务获取锁,如果获取到锁,则执行任务,如果获取不到,则什么都不干。
Code:
@Configuration
@Slf4j
public class ReportSchedule {
@Autowired
private RedissonClient redissonClient;
@Value("${server.port}")
private String port;
private static final String LOCK = "lock";
@Scheduled(cron = "*/5 * * * * ?")
public void reportTask() throws Exception {
RLock lock = redissonClient.getLock(LOCK);
if (lock.tryLock()) {
try {
String hostAddress = InetAddress.getLocalHost().getHostAddress();
log.info("ip:{},端口:{},在执行上报任务......", hostAddress, port);
log.error("mark");
} finally {
lock.unlock();
}
}
}
}
检测任务:
日志:
2022-08-25 14:15:50 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:16:00 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:16:25 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:16:35 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:16:40 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:16:45 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:16:50 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:16:55 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:17:05 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:17:15 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:17:20 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:17:30 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:17:35 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:17:45 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:17:50 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:17:55 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:18:40 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:18:45 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:18:50 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:19:00 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:19:10 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:15:40 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 14:15:45 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 14:16:05 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 14:16:10 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 14:16:25 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 14:17:10 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 14:17:25 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 14:17:30 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 14:18:00 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 14:18:45 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 14:18:55 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 14:15:45 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 14:15:55 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 14:16:15 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 14:16:20 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 14:16:30 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 14:17:00 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 14:17:35 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 14:17:40 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 14:18:05 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 14:18:10 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 14:18:15 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 14:18:20 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 14:18:25 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 14:18:30 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 14:18:35 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 14:19:05 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
检测结果:
问题: 由于任务执行的时间很短,A节点抢到锁释放锁完成了,B节点抢锁去发现就没有锁,导致上报任务重复执行。
5 分布式锁+标记解决方案
@Configuration
@Slf4j
public class ReportSchedule {
@Autowired
private RedissonClient redissonClient;
@Autowired
private RedisTemplate<String, String> redisTemplate;
@Value("${server.port}")
private String port;
private static final String LOCK = "lock";
private static final String REPORT_TASK = "reportTask";
@Scheduled(cron = "*/5 * * * * ?")
public void reportTask() throws Exception {
RLock lock = redissonClient.getLock(LOCK);
if (lock.tryLock()) {
try {
String flag = redisTemplate.opsForValue().get(REPORT_TASK);
//如果已经标记成功,那么不需要执行当前任务,
if (StringUtils.isBlank(flag)) {
String hostAddress = InetAddress.getLocalHost().getHostAddress();
log.error("ip:{},端口:{},在执行上报任务......", hostAddress, port);
//上报成功后,打标记,标记时长为3秒
redisTemplate.opsForValue().set(REPORT_TASK, String.valueOf(1), 3, TimeUnit.SECONDS);
}
} finally {
lock.unlock();
}
}
}
}
检测任务:
日志:
2022-08-25 14:49:30 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:49:35 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:49:50 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:50:00 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:50:05 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:50:15 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:50:35 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:50:40 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:50:50 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:50:55 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:51:05 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:51:15 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:51:25 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:51:30 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:51:35 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:51:40 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:51:45 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:51:50 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:51:55 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:52:00 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:52:05 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:52:10 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:52:15 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:52:20 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:52:25 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:52:30 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:52:35 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:52:40 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:52:45 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:52:50 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:52:55 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:53:00 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:53:05 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:53:10 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:53:20 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:53:25 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:53:30 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:53:35 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:53:40 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:53:55 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:54:00 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:54:05 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:54:10 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:54:15 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:54:20 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:54:25 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:54:30 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:54:35 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:54:40 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:54:45 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:54:50 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:55:00 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:55:05 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:55:10 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:55:15 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:55:20 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:55:25 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:55:30 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:55:35 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:55:40 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:55:45 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:55:50 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:55:55 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:56:00 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:56:10 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 14:50:25 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 14:50:30 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 14:53:15 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 14:53:45 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 14:56:05 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 14:49:40 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 14:49:45 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 14:49:55 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 14:50:10 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 14:50:20 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 14:50:45 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 14:51:00 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 14:51:10 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 14:51:20 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 14:53:50 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 14:54:55 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
检测结果:没有重复任务
缺陷: 如果节点A抢到锁,由于特殊原因(网络波动)执行失败,节点B、节点C不能执行当前任务。
6 抢锁等待时间解决方案
等待时间不能大于标记时间
@Configuration
@Slf4j
public class ReportSchedule {
@Autowired
private RedissonClient redissonClient;
@Autowired
private RedisTemplate<String, String> redisTemplate;
@Value("${server.port}")
private String port;
private static final String LOCK = "lock";
private static final String REPORT_TASK = "reportTask";
@Scheduled(cron = "*/5 * * * * ?")
public void reportTask() throws Exception {
RLock lock = redissonClient.getLock(LOCK);
if (lock.tryLock(2, TimeUnit.SECONDS)) {
try {
String flag = redisTemplate.opsForValue().get(REPORT_TASK);
//如果已经标记成功,那么不需要执行当前任务
if (StringUtils.isBlank(flag)) {
String hostAddress = InetAddress.getLocalHost().getHostAddress();
log.error("ip:{},端口:{},在执行上报任务......", hostAddress, port);
//上报成功后,打标记,标记时长为3秒
redisTemplate.opsForValue().set(REPORT_TASK, String.valueOf(1), 3, TimeUnit.SECONDS);
}
} finally {
lock.unlock();
}
}
}
}
检测任务:
2022-08-25 15:06:30 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 15:06:35 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 15:06:40 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 15:06:55 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 15:07:05 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 15:07:15 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 15:07:20 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 15:07:35 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 15:07:55 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 15:08:00 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 15:08:10 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 15:08:25 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 15:08:30 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 15:08:35 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 15:08:55 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 15:09:00 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 15:10:10 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 15:10:15 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 15:10:25 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 15:10:40 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 15:10:45 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 15:10:55 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 15:11:00 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8666,在执行上报任务......
2022-08-25 15:06:45 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 15:07:00 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 15:07:50 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 15:08:15 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 15:08:45 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 15:08:50 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 15:09:05 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 15:09:10 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 15:09:15 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 15:09:30 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 15:09:40 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 15:09:45 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 15:10:00 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 15:10:35 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8667,在执行上报任务......
2022-08-25 15:06:50 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 15:07:10 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 15:07:25 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 15:07:30 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 15:07:40 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 15:07:45 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 15:08:05 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 15:08:20 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 15:08:40 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 15:09:20 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 15:09:25 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 15:09:35 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 15:09:50 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 15:09:55 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 15:10:05 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 15:10:20 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 15:10:30 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 15:10:50 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
2022-08-25 15:11:05 [ERROR] [scheduling-1] c.l.s.ReportSchedule - ip:192.168.110.203,端口:8668,在执行上报任务......
检测结果:没有重复任务