fuliqi
2025-01-24 0becc3c207412543ded0195cc4f897eb5434f24d
多次ping
2个文件已修改
24 ■■■■ 已修改文件
ycl-server/src/main/java/com/ycl/task/UYTask.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/utils/CheckPointUtil.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -214,7 +214,7 @@
                            OnlineCheckThread thread = new OnlineCheckThread(monitor, checkPointUtil, time);
                            return thread.call(); // 假设 OnlineCheckThread 实现了 Callable 接口
                        }, executorService)
                        .orTimeout(60, TimeUnit.SECONDS)
                        .orTimeout(120, TimeUnit.SECONDS)
                        .exceptionally(ex -> {
                            if (ex instanceof TimeoutException) {
                                log.error("任务执行超时:"+monitor.getIp());
ycl-server/src/main/java/com/ycl/utils/CheckPointUtil.java
@@ -86,11 +86,7 @@
            map = new HashMap<>();
        }
        if (!monitor.getPingOnline()) {
            try {
                reachable = InetAddress.getByName(monitor.getIp()).isReachable(5000);
            } catch (IOException e) {
                log.error("Ping异常{}",e.getMessage());
            }
            reachable = checkPing(monitor, reachable);
            if(!reachable) log.error("ping检测离线"+monitor.getIp());
            monitor.setPingOnline(reachable);
        }
@@ -123,6 +119,22 @@
        return monitor;
    }
    private boolean checkPing(TMonitorResult monitor, boolean reachable) {
        try {
            int[] sleepTimes = {5000, 15000, 30000};
            for (int sleepTime : sleepTimes) {
                reachable = InetAddress.getByName(monitor.getIp()).isReachable(5000);
                if (reachable) {
                    break;
                }
                Thread.sleep(sleepTime);
            }
        } catch (Exception e) {
            log.error("Ping异常{}",e.getMessage());
        }
        return reachable;
    }
    /**
     * 监测点位在线