From cf4afcc8902efc85f1e71f26073404a0a7a4f204 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: 周三, 31 7月 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