From cf4afcc8902efc85f1e71f26073404a0a7a4f204 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: 星期三, 31 七月 2024 09:48:41 +0800
Subject: [PATCH] 修改:异步async指定线程池

---
 ard-work/src/main/java/com/ruoyi/alarm/radar/service/impl/ArdRadarServiceImpl.java            |    4 +-
 ard-work/src/main/java/com/ruoyi/alarm/config/AsyncConfiguration.java                         |   46 ++++++++++++-----------
 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java            |    2 
 ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java              |   13 ------
 ard-work/src/main/java/com/ruoyi/call/listener/MsgListener.java                               |    2 
 ard-work/src/main/java/com/ruoyi/storage/minio/service/impl/StorageMinioEventServiceImpl.java |    2 
 ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java                   |    2 
 7 files changed, 31 insertions(+), 40 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/alarm/config/AsyncConfiguration.java b/ard-work/src/main/java/com/ruoyi/alarm/config/AsyncConfiguration.java
index bba963a..7ce10af 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/config/AsyncConfiguration.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/config/AsyncConfiguration.java
@@ -4,6 +4,7 @@
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.AsyncConfigurer;
 import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 
@@ -19,7 +20,7 @@
  **/
 @Configuration
 @EnableAsync
-public class AsyncConfiguration {
+public class AsyncConfiguration{
     @Value("${ThreadPoolTask.corePoolSize}")
     Integer corePoolSize;
     @Value("${ThreadPoolTask.maxPoolSize}")
@@ -40,27 +41,6 @@
         executor.setQueueCapacity(queueCapacity);
         //绾跨▼鐨勫悕绉板墠缂�
         executor.setThreadNamePrefix("alarmExecutor-");
-        //绾跨▼娲昏穬鏃堕棿锛堢锛�
-        executor.setKeepAliveSeconds(keepAliveSeconds);
-        //绛夊緟鎵�鏈変换鍔$粨鏉熷悗鍐嶅叧闂嚎绋嬫睜
-        executor.setWaitForTasksToCompleteOnShutdown(true);
-        //璁剧疆鎷掔粷绛栫暐
-        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
-        //鎵ц鍒濆鍖�
-        executor.initialize();
-        return executor;
-    }
-    @Bean("loginExecutor")
-    public Executor loginExecutor(){
-        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
-        //閰嶇疆鏍稿績绾跨▼鏁�
-        executor.setCorePoolSize(corePoolSize);
-        //閰嶇疆鏈�澶х嚎绋嬫暟
-        executor.setMaxPoolSize(maxPoolSize);
-        //閰嶇疆闃熷垪澶у皬
-        executor.setQueueCapacity(queueCapacity);
-        //绾跨▼鐨勫悕绉板墠缂�
-        executor.setThreadNamePrefix("loginExecutor-");
         //绾跨▼娲昏穬鏃堕棿锛堢锛�
         executor.setKeepAliveSeconds(keepAliveSeconds);
         //绛夊緟鎵�鏈変换鍔$粨鏉熷悗鍐嶅叧闂嚎绋嬫睜
@@ -92,4 +72,26 @@
         executor.initialize();
         return executor;
     }
+    @Bean("globalExecutor")
+    public Executor globalExecutor(){
+        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+        //閰嶇疆鏍稿績绾跨▼鏁�
+        executor.setCorePoolSize(10);
+        //閰嶇疆鏈�澶х嚎绋嬫暟
+        executor.setMaxPoolSize(15);
+        //閰嶇疆闃熷垪澶у皬
+        executor.setQueueCapacity(25);
+        //绾跨▼鐨勫悕绉板墠缂�
+        executor.setThreadNamePrefix("globalExecutor-");
+        //绾跨▼娲昏穬鏃堕棿锛堢锛�
+        executor.setKeepAliveSeconds(keepAliveSeconds);
+        //绛夊緟鎵�鏈変换鍔$粨鏉熷悗鍐嶅叧闂嚎绋嬫睜
+        executor.setWaitForTasksToCompleteOnShutdown(true);
+        //璁剧疆鎷掔粷绛栫暐
+        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+        //鎵ц鍒濆鍖�
+        executor.initialize();
+        return executor;
+    }
+
 }
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/radar/service/impl/ArdRadarServiceImpl.java b/ard-work/src/main/java/com/ruoyi/alarm/radar/service/impl/ArdRadarServiceImpl.java
index 9626ed2..0a0e6a1 100644
--- a/ard-work/src/main/java/com/ruoyi/alarm/radar/service/impl/ArdRadarServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/alarm/radar/service/impl/ArdRadarServiceImpl.java
@@ -43,7 +43,7 @@
      * 2023/11/2 9:00:55
      */
     @Override
-    @Async
+    @Async("globalExecutor")
     public void forceGuide(String msg) {
         try {
             Map<String, Object> msgMap = JSONObject.parseObject(msg, Map.class);
@@ -86,7 +86,7 @@
      * 2023/11/2 9:00:55
      */
     @Override
-    @Async
+    @Async("globalExecutor")
     public void followGuide(String msg) {
         try {
             RadarAlarmData radarFollowData = JSONObject.parseObject(msg, RadarAlarmData.class);
diff --git a/ard-work/src/main/java/com/ruoyi/call/listener/MsgListener.java b/ard-work/src/main/java/com/ruoyi/call/listener/MsgListener.java
index 08f43ec..552c9d2 100644
--- a/ard-work/src/main/java/com/ruoyi/call/listener/MsgListener.java
+++ b/ard-work/src/main/java/com/ruoyi/call/listener/MsgListener.java
@@ -26,7 +26,7 @@
 @Slf4j(topic = "msgListener")
 public class MsgListener {
 
-    @Async
+    @Async("globalExecutor")
     @EventListener(MessageEvent.class)
     public void ArdCallHistoryEventListener(MessageEvent messageEvent) {
         log.debug("鐩戝惉鍒颁細璇濇秷鎭簨浠�:"+messageEvent.getArdCallHistory().getContent());
diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/service/impl/StorageMinioEventServiceImpl.java b/ard-work/src/main/java/com/ruoyi/storage/minio/service/impl/StorageMinioEventServiceImpl.java
index d5f2c06..5010b99 100644
--- a/ard-work/src/main/java/com/ruoyi/storage/minio/service/impl/StorageMinioEventServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/storage/minio/service/impl/StorageMinioEventServiceImpl.java
@@ -108,7 +108,7 @@
         return storageMinioEventMapper.deleteStorageMinioEventById(id);
     }
 
-    @Async
+    @Async("globalExecutor")
     @Override
     public void parseStorageMinioEvent(String message) {
         try {
diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
index fe9af52..5d1c7e8 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
@@ -134,7 +134,7 @@
     }
 
     @Override
-    @Async("loginExecutor")
+    @Async("globalExecutor")
     public AjaxResult asyncLogin(ArdCameras camera) {
         try {
             LoginModule.init(disConnect, haveReConnect);
diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
index 3dc494e..e622d1c 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
@@ -184,7 +184,7 @@
      * @淇敼浜哄拰鍏跺畠淇℃伅
      */
     @Override
-    @Async("loginExecutor")
+    @Async("globalExecutor")
     public AjaxResult asyncLogin(ArdCameras camera) {
         try {
             // 鍒濆鍖�
@@ -237,17 +237,6 @@
                 return AjaxResult.warn("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍澶辫触: " + SdkErrorCodeEnum.getDescByCode(errorCode) + "(" + errorCode + ")");
             }
             log.debug("Login Success 銆� " + camera.getIp() + ":" + camera.getPort() + " 銆�");
-            synchronized (_lock) {
-                if (fExceptionCallBack == null) {
-                    fExceptionCallBack = new ExceptionCallBack();//寮傚父鍥炶皟
-                    //璁剧疆寮傚父鍥炶皟鍑芥暟(鍙湪鍥炶皟鍑芥暟涓幏鍙栬澶囦笂涓嬬嚎鐘舵�佺瓑)
-                    if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) {
-                        log.debug("Set fExceptionCallBack function fail");
-                    } else {
-                        log.debug("Set fExceptionCallBack function successfully!");
-                    }
-                }
-            }
 
             GlobalVariable.loginMap.put(camera.getId(), lUserID);
             GlobalVariable.loginCameraMap.put(lUserID, camera);
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
index aa97e37..c1d6552 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -152,7 +152,7 @@
      *
      * @param loginUser 鐧诲綍鐢ㄦ埛
      */
-    @Async
+    @Async("globalExecutor")
     public String getRongCloudToken(LoginUser loginUser) {
         try {
             String userId = loginUser.getUserId();

--
Gitblit v1.9.3