From 1791d8d45a0f6de527a1e243b9ba806edc0753aa Mon Sep 17 00:00:00 2001
From: Xiajijian <1176061145@qq.com>
Date: Thu, 06 Nov 2025 14:32:14 +0800
Subject: [PATCH] 1.修改文件业务,屏蔽前台接口开关。 2.文件夹业务修改为,分组管理业务。 3.航线(kmz)对象增加分组ID。 4.分组信息删除同时删除分组下航信信息。 5.新增航线(kmz)时,不选分组,将赋值默认分组信息。 6.增加初始化数据类。 7.生成kmz文件,增加默认值管理。
---
ard-work/src/main/java/com/ard/work/component/websocket/handler/BaseSubscriptionManager.java | 23 ++++++++++++++++-------
1 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/ard-work/src/main/java/com/ard/work/component/websocket/handler/BaseSubscriptionManager.java b/ard-work/src/main/java/com/ard/work/component/websocket/handler/BaseSubscriptionManager.java
index 9482d18..8d0db3e 100644
--- a/ard-work/src/main/java/com/ard/work/component/websocket/handler/BaseSubscriptionManager.java
+++ b/ard-work/src/main/java/com/ard/work/component/websocket/handler/BaseSubscriptionManager.java
@@ -16,7 +16,7 @@
// 存储订阅的用户
protected final Map<String, Set<Long>> subscriptions = new ConcurrentHashMap<>();
// 定时任务调度器
- protected final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
+ protected final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(10);
// 存储推送任务
protected final Map<String, ScheduledFuture<?>> pushTasks = new ConcurrentHashMap<>();
@@ -24,8 +24,9 @@
* 订阅指定设备的数据
*/
public void subscribe(String boxSn, Long userId, Integer period) {
- subscriptions.computeIfAbsent(boxSn, k -> new HashSet<>()).add(userId);
+ subscriptions.computeIfAbsent(boxSn, k -> ConcurrentHashMap.newKeySet()).add(userId);
if (subscriptions.get(boxSn).size() == 1) {
+ log.debug("首次订阅,启动推送任务");
startPushTask(boxSn, period);
}
}
@@ -34,15 +35,19 @@
* 取消订阅
*/
public void unsubscribe(String boxSn, Long userId) {
- Set<Long> userIds = subscriptions.get(boxSn);
- if (userIds != null) {
+ subscriptions.compute(boxSn, (key, userIds) -> {
+ if (userIds == null) {
+ return null;
+ }
userIds.remove(userId);
if (userIds.isEmpty()) {
stopPushTask(boxSn);
+ log.debug("无人订阅设备 {},移除订阅记录", boxSn);
+ return null; // 直接返回 null 等价于 remove(key)
}
- }
+ return userIds;
+ });
}
-
/**
* 启动推送任务
*/
@@ -52,7 +57,11 @@
return;
}
ScheduledFuture<?> future = scheduler.scheduleAtFixedRate(() -> {
- sendDataToSubscribers(boxSn);
+ try {
+ sendDataToSubscribers(boxSn);
+ } catch (Exception e) {
+ log.error("Error in push task for boxSn={}", boxSn, e);
+ }
}, 0, period, TimeUnit.SECONDS);
pushTasks.put(boxSn, future);
--
Gitblit v1.9.3