From 60211f59d2c85053533ed151adb2bdc5348dd342 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: 周四, 01 8月 2024 09:51:12 +0800
Subject: [PATCH] 修改:会话消息独立线程池;线程池参数统一设置
---
ard-work/src/main/java/com/ruoyi/utils/websocket/util/WebSocketUtils.java | 2 +-
ard-work/src/main/java/com/ruoyi/alarm/config/AsyncConfiguration.java | 28 ++++++++++++++++++++++++----
ard-work/src/main/java/com/ruoyi/call/listener/MsgListener.java | 2 +-
ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallHistoryServiceImpl.java | 2 ++
ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java | 4 +++-
5 files changed, 31 insertions(+), 7 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 7ce10af..95838d8 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
@@ -76,11 +76,11 @@
public Executor globalExecutor(){
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
//配置核心线程数
- executor.setCorePoolSize(10);
+ executor.setCorePoolSize(corePoolSize);
//配置最大线程数
- executor.setMaxPoolSize(15);
+ executor.setMaxPoolSize(maxPoolSize);
//配置队列大小
- executor.setQueueCapacity(25);
+ executor.setQueueCapacity(queueCapacity);
//线程的名称前缀
executor.setThreadNamePrefix("globalExecutor-");
//线程活跃时间(秒)
@@ -93,5 +93,25 @@
executor.initialize();
return executor;
}
-
+ @Bean("msgExecutor")
+ public Executor msgExecutor(){
+ ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+ //配置核心线程数
+ executor.setCorePoolSize(corePoolSize);
+ //配置最大线程数
+ executor.setMaxPoolSize(maxPoolSize);
+ //配置队列大小
+ executor.setQueueCapacity(queueCapacity);
+ //线程的名称前缀
+ executor.setThreadNamePrefix("msgExecutor-");
+ //线程活跃时间(秒)
+ 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/call/listener/MsgListener.java b/ard-work/src/main/java/com/ruoyi/call/listener/MsgListener.java
index 552c9d2..ebbecfa 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("globalExecutor")
+ @Async("msgExecutor")
@EventListener(MessageEvent.class)
public void ArdCallHistoryEventListener(MessageEvent messageEvent) {
log.debug("监听到会话消息事件:"+messageEvent.getArdCallHistory().getContent());
diff --git a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallHistoryServiceImpl.java b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallHistoryServiceImpl.java
index 979a542..b28254c 100644
--- a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallHistoryServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallHistoryServiceImpl.java
@@ -16,6 +16,7 @@
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.utils.websocket.util.WebSocketUtils;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;
@@ -42,6 +43,7 @@
* @date 2024-07-03
*/
@Service
+@Slf4j(topic = "msgListener")
public class ArdCallHistoryServiceImpl implements IArdCallHistoryService {
@Resource
private ArdCallHistoryMapper ardCallHistoryMapper;
diff --git a/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java
index f89b53d..566696f 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java
@@ -1,5 +1,6 @@
package com.ruoyi.utils.mqtt;
+import com.ruoyi.alarm.global.service.IGlobalAlarmService;
import com.ruoyi.alarm.global.service.impl.GlobalAlarmServiceImpl;
import com.ruoyi.alarm.radar.service.ArdRadarService;
import com.ruoyi.common.utils.spring.SpringUtils;
@@ -73,8 +74,9 @@
// subscribe后得到的消息会执行到这里面
log.debug("接收消息 【主题】:" + topic + " 【内容】:" + new String(message.getPayload(), StandardCharsets.UTF_8));
//进行业务处理(接收报警数据)
- GlobalAlarmServiceImpl globalAlarmService = SpringUtils.getBean(GlobalAlarmServiceImpl.class);
+ IGlobalAlarmService globalAlarmService = SpringUtils.getBean(IGlobalAlarmService.class);
globalAlarmService.receiveAlarm(topic, new String(message.getPayload(), StandardCharsets.UTF_8));
+
if (topic.equals("minioEvent"))
{
IStorageMinioEventService storageMinioEventService = SpringUtils.getBean(IStorageMinioEventService.class);
diff --git a/ard-work/src/main/java/com/ruoyi/utils/websocket/util/WebSocketUtils.java b/ard-work/src/main/java/com/ruoyi/utils/websocket/util/WebSocketUtils.java
index 4583f87..18606e1 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/websocket/util/WebSocketUtils.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/websocket/util/WebSocketUtils.java
@@ -23,7 +23,7 @@
public final class WebSocketUtils {
// 存储 websocket session
- public static final Map<String, Session> ONLINE_USER_SESSIONS = new ConcurrentHashMap<>();
+ public static final ConcurrentMap<String, Session> ONLINE_USER_SESSIONS = new ConcurrentHashMap<>();
//存储房间
public static final ConcurrentHashMap<String, Set<String>> ROOM_USER_SET = new ConcurrentHashMap<>();
--
Gitblit v1.9.3