|
@@ -2,6 +2,8 @@ package cn.com.qmth.examcloud.web.actuator;
|
|
|
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
+import java.util.concurrent.atomic.AtomicBoolean;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import org.springframework.boot.ApplicationArguments;
|
|
import org.springframework.boot.ApplicationArguments;
|
|
@@ -27,11 +29,16 @@ public class ApiStatusInfoHolder implements ApplicationRunner {
|
|
|
|
|
|
private static List<ApiStatusInfo> apiStatusInfoList = Lists.newArrayList();
|
|
private static List<ApiStatusInfo> apiStatusInfoList = Lists.newArrayList();
|
|
|
|
|
|
|
|
+ private static AtomicBoolean running = new AtomicBoolean(false);
|
|
|
|
+
|
|
public static ApiStatusInfo getApiStatusInfo(String mapping) {
|
|
public static ApiStatusInfo getApiStatusInfo(String mapping) {
|
|
return apiStatusInfoMap.get(mapping);
|
|
return apiStatusInfoMap.get(mapping);
|
|
}
|
|
}
|
|
|
|
|
|
public static List<ApiStatusInfo> getApiStatusInfoList() {
|
|
public static List<ApiStatusInfo> getApiStatusInfoList() {
|
|
|
|
+ if (running.get()) {
|
|
|
|
+ return apiStatusInfoList;
|
|
|
|
+ }
|
|
refresh();
|
|
refresh();
|
|
return apiStatusInfoList;
|
|
return apiStatusInfoList;
|
|
}
|
|
}
|
|
@@ -43,7 +50,7 @@ public class ApiStatusInfoHolder implements ApplicationRunner {
|
|
@Override
|
|
@Override
|
|
public void run() {
|
|
public void run() {
|
|
while (true) {
|
|
while (true) {
|
|
- Util.sleep(10);
|
|
|
|
|
|
+ Util.sleep(5);
|
|
refresh();
|
|
refresh();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -52,6 +59,8 @@ public class ApiStatusInfoHolder implements ApplicationRunner {
|
|
}
|
|
}
|
|
|
|
|
|
private static synchronized void refresh() {
|
|
private static synchronized void refresh() {
|
|
|
|
+
|
|
|
|
+ running.set(true);
|
|
try {
|
|
try {
|
|
ReportorHolder.getApiDataReportor().report();
|
|
ReportorHolder.getApiDataReportor().report();
|
|
List<ReportInfo> reportInfoList = ReportorHolder.getApiDataReportor()
|
|
List<ReportInfo> reportInfoList = ReportorHolder.getApiDataReportor()
|
|
@@ -70,8 +79,8 @@ public class ApiStatusInfoHolder implements ApplicationRunner {
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
LOG.error("fail to refresh API status.", e);
|
|
LOG.error("fail to refresh API status.", e);
|
|
}
|
|
}
|
|
-
|
|
|
|
- Util.sleep(1);
|
|
|
|
|
|
+ Util.sleep(TimeUnit.MILLISECONDS, 500);
|
|
|
|
+ running.set(false);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|