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