From a136c5fba98b6dea0e43a77c409ba8eddcf5b9b6 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期三, 11 九月 2024 16:44:16 +0800 Subject: [PATCH] OSD线程任务调整 --- ycl-server/src/main/java/com/ycl/task/OsdTask.java | 110 +++------------------------ ycl-server/src/main/java/com/ycl/thread/OSDCheckThread.java | 112 ++++++++++++++++++++++++++++ 2 files changed, 126 insertions(+), 96 deletions(-) diff --git a/ycl-server/src/main/java/com/ycl/task/OsdTask.java b/ycl-server/src/main/java/com/ycl/task/OsdTask.java index 0c493a9..1e268ab 100644 --- a/ycl-server/src/main/java/com/ycl/task/OsdTask.java +++ b/ycl-server/src/main/java/com/ycl/task/OsdTask.java @@ -9,8 +9,10 @@ import com.ycl.platform.domain.result.OSDResult; import com.ycl.platform.domain.result.UY.MonitorQualifyResult; import com.ycl.platform.domain.result.UY.OsdCheckResult; +import com.ycl.platform.domain.vo.OnlineThreadVO; import com.ycl.platform.mapper.TMonitorMapper; import com.ycl.platform.service.UYErrorTypeCheckService; +import com.ycl.thread.OSDCheckThread; import com.ycl.utils.DateUtils; import com.ycl.utils.StringUtils; import constant.ApiConstants; @@ -29,28 +31,13 @@ import java.util.Date; import java.util.List; import java.util.Map; -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; +import java.util.concurrent.*; import java.util.function.Function; import java.util.stream.Collectors; @Slf4j @Component("OsdTask") public class OsdTask { - @Value("${HK.userName}") - public String HKUserName; - @Value("${HK.password}") - public String HKPassword; - @Value("${DH.userName}") - public String DHUserName; - @Value("${DH.password}") - public String DHPassword; - @Value("${YS.userName}") - public String YSUserName; - @Value("${YS.password}") - public String YSPassword; @Autowired private MongoTemplate mongoTemplate; @Autowired @@ -65,9 +52,8 @@ * 鍚屾鍝佺墝鍒癿ysql */ //TODO锛氬ぇ鍗庡姩鎬佸簱linux鎹綅缃� - public void getOSD() { + public void getOSD() throws ExecutionException, InterruptedException { log.info("寮�濮嬭幏鍙朞SD"); - List<OSDResult> osdResultList = new ArrayList<>(); //鏌ヤ竴鏈轰竴妗onitor Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); List<MonitorQualifyResult> oneMachineFileResults = mongoTemplate.find(query, MonitorQualifyResult.class); @@ -82,53 +68,20 @@ new ThreadPoolExecutor.CallerRunsPolicy() ); List<TMonitor> monitors = monitorMapper.selectByNumbers(serialNumbers); + //杩囨护ip monitors = monitors.stream().filter(monitor -> !StringUtils.isEmpty(monitor.getIp()) && !"127.0.0.1".equals(monitor.getIp())).collect(Collectors.toList()); -// log.info("澶勭悊鏁版嵁澶у皬{}", monitors.size()); + List<Future<OSDResult>> futureList = new ArrayList<>(48); + List<OSDResult> osdResultList = new ArrayList<>(); for (TMonitor monitor : monitors) { - executorService.submit(() -> { - if (DeviceType.HK.getType().equals(monitor.getDeviceType())) { - //娴峰悍 - OSDResult osd = HKApi.getOsdByIP(monitor.getIp(), HKUserName, HKPassword); - if (checkSuccess(osdResultList, monitor, osd)) { - log.info("娴峰悍璋冪敤鎴愬姛" + osd); - return; - } - } else if (DeviceType.DH.getType().equals(monitor.getDeviceType())) { - //澶у崕 - OSDResult osd = DHApi.getOsd(monitor.getIp(), DHUserName, DHPassword); - if (checkSuccess(osdResultList, monitor, osd)) { - log.info("澶у崕璋冪敤鎴愬姛" + osd); - return; - } - } else if (DeviceType.YS.getType().equals(monitor.getDeviceType())) { - //瀹囪 - OSDResult osd = YSApi.getOsd(monitor.getIp(), YSUserName, YSPassword); - if (checkSuccess(osdResultList, monitor, osd)) { - log.info("瀹囪璋冪敤鎴愬姛" + osd); - return; - } - } - //鏈煡鍝佺墝鎴栬�卆pi璋冪敤澶辫触锛屾尐涓墽琛屾墍鏈塧pi - OSDResult osd = tryAllApi(monitor); - if (osd != null) { - synchronized (osdResultList) { - osdResultList.add(osd); - } - } - }); + OSDCheckThread thread = new OSDCheckThread(monitor); + Future<OSDResult> future = executorService.submit(thread); + futureList.add(future); } - //涓嶅啀鎺ユ敹鏂颁换鍔� + for (Future<OSDResult> future : futureList) { + osdResultList.add(future.get()); + } executorService.shutdown(); - try { - // 绛夊緟鎵�鏈変换鍔″畬鎴愶紝鏈�澶氱瓑寰�10绉掞紙鍙互鏍规嵁闇�瑕佽皟鏁达級 - if (!executorService.awaitTermination(10, TimeUnit.SECONDS)) { - // 濡傛灉瓒呮椂锛屽皾璇曞仠姝㈠綋鍓嶆鍦ㄦ墽琛岀殑浠诲姟 - executorService.shutdownNow(); - } - } catch (InterruptedException e) { - // 褰撳墠绾跨▼鍦ㄧ瓑寰呰繃绋嬩腑琚腑鏂� - executorService.shutdownNow(); - } + //缁撴潫api鎵ц锛屽紑濮嬫牎楠� List<OsdCheckResult> checkResults = new ArrayList<>(); Map<String, TMonitor> monitorMap = monitors.stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity())); @@ -222,40 +175,5 @@ } } - private boolean checkSuccess(List<OSDResult> osdResultList, TMonitor monitor, OSDResult osd) { - if (osd != null) { - osd.setSerialNumber(monitor.getSerialNumber()); - synchronized (osdResultList) { - osdResultList.add(osd); - } - return true; - } else { - return false; - } - } - private OSDResult tryAllApi(TMonitor monitor) { - //灏濊瘯娴峰悍鐨刟pi - OSDResult hkosd = HKApi.getOsdByIP(monitor.getIp(), HKUserName, HKPassword); - if (hkosd != null) { - hkosd.setSerialNumber(monitor.getSerialNumber()); - log.info("娴峰悍璋冪敤鎴愬姛" + hkosd); - return hkosd; - } - //灏濊瘯澶у崕鐨刟pi - OSDResult dhosd = DHApi.getOsd(monitor.getIp(), DHUserName, DHPassword); - if (dhosd != null) { - dhosd.setSerialNumber(monitor.getSerialNumber()); - log.info("澶у崕璋冪敤鎴愬姛" + dhosd); - return dhosd; - } - //瀹囪api - OSDResult ysosd = YSApi.getOsd(monitor.getIp(), YSUserName, YSPassword); - if (ysosd != null) { - ysosd.setSerialNumber(monitor.getSerialNumber()); - log.info("瀹囪璋冪敤鎴愬姛" + ysosd); - return ysosd; - } - return null; - } } diff --git a/ycl-server/src/main/java/com/ycl/thread/OSDCheckThread.java b/ycl-server/src/main/java/com/ycl/thread/OSDCheckThread.java new file mode 100644 index 0000000..ab6dbe5 --- /dev/null +++ b/ycl-server/src/main/java/com/ycl/thread/OSDCheckThread.java @@ -0,0 +1,112 @@ +package com.ycl.thread; + +import com.ycl.api.DH.utils.DHApi; +import com.ycl.api.HK.HKApi; +import com.ycl.api.YS.YSApi; +import com.ycl.platform.domain.entity.TMonitor; +import com.ycl.platform.domain.result.OSDResult; +import enumeration.DeviceType; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; + +import java.util.concurrent.Callable; +@Slf4j +public class OSDCheckThread implements Callable<OSDResult> { + private TMonitor monitor; + @Value("${HK.userName}") + public String HKUserName; + @Value("${HK.password}") + public String HKPassword; + @Value("${DH.userName}") + public String DHUserName; + @Value("${DH.password}") + public String DHPassword; + @Value("${YS.userName}") + public String YSUserName; + @Value("${YS.password}") + public String YSPassword; + + public OSDCheckThread(TMonitor monitor) { + this.monitor = monitor; + } + + public TMonitor getMonitor() { + return monitor; + } + + public void setMonitor(TMonitor monitor) { + this.monitor = monitor; + } + + @Override + public OSDResult call() throws Exception { + if (DeviceType.HK.getType().equals(monitor.getDeviceType())) { + //娴峰悍 + OSDResult osd = HKApi.getOsdByIP(monitor.getIp(), HKUserName, HKPassword); + OSDResult osdResult = checkSuccess(monitor, osd); + if (osdResult!=null) { + log.info("娴峰悍璋冪敤鎴愬姛" + osd); + return osd; + }else { + return null; + } + } else if (DeviceType.DH.getType().equals(monitor.getDeviceType())) { + //澶у崕 + OSDResult osd = DHApi.getOsd(monitor.getIp(), DHUserName, DHPassword); + OSDResult osdResult = checkSuccess(monitor, osd); + if (osdResult!=null) { + log.info("澶у崕璋冪敤鎴愬姛" + osd); + return osd; + }else { + return null; + } + } else if (DeviceType.YS.getType().equals(monitor.getDeviceType())) { + //瀹囪 + OSDResult osd = YSApi.getOsd(monitor.getIp(), YSUserName, YSPassword); + OSDResult osdResult = checkSuccess(monitor, osd); + if (osdResult!=null) { + log.info("瀹囪璋冪敤鎴愬姛" + osd); + return osd; + }else { + return null; + } + } + //鏈煡鍝佺墝鎴栬�卆pi璋冪敤澶辫触锛屾尐涓墽琛屾墍鏈塧pi + return tryAllApi(monitor); + } + + + private OSDResult tryAllApi(TMonitor monitor) { + //灏濊瘯娴峰悍鐨刟pi + OSDResult hkosd = HKApi.getOsdByIP(monitor.getIp(), HKUserName, HKPassword); + if (hkosd != null) { + hkosd.setSerialNumber(monitor.getSerialNumber()); + log.info("娴峰悍璋冪敤鎴愬姛" + hkosd); + return hkosd; + } + //灏濊瘯澶у崕鐨刟pi + OSDResult dhosd = DHApi.getOsd(monitor.getIp(), DHUserName, DHPassword); + if (dhosd != null) { + dhosd.setSerialNumber(monitor.getSerialNumber()); + log.info("澶у崕璋冪敤鎴愬姛" + dhosd); + return dhosd; + } + //瀹囪api + OSDResult ysosd = YSApi.getOsd(monitor.getIp(), YSUserName, YSPassword); + if (ysosd != null) { + ysosd.setSerialNumber(monitor.getSerialNumber()); + log.info("瀹囪璋冪敤鎴愬姛" + ysosd); + return ysosd; + } + return null; + } + + private OSDResult checkSuccess(TMonitor monitor, OSDResult osd) { + if (osd != null) { + osd.setSerialNumber(monitor.getSerialNumber()); + return osd; + } else { + return null; + } + } +} -- Gitblit v1.8.0