From b78295e8da96c3e5e76befeef9582ce5273dbb74 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期二, 29 九月 2026 13:10:23 +0800
Subject: [PATCH] 按代码规范检查整改实体注释、Service Javadoc 与分层边界
---
ruoyi-admin/src/main/java/com/battery/business/web/TestLiveStream.java | 18 +++++++++++++++++-
1 files changed, 17 insertions(+), 1 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/battery/business/web/TestLiveStream.java b/ruoyi-admin/src/main/java/com/battery/business/web/TestLiveStream.java
index 9420d2d..3e8dd81 100644
--- a/ruoyi-admin/src/main/java/com/battery/business/web/TestLiveStream.java
+++ b/ruoyi-admin/src/main/java/com/battery/business/web/TestLiveStream.java
@@ -3,6 +3,7 @@
import java.util.Map;
import java.util.concurrent.*;
import jakarta.annotation.PreDestroy;
+import org.apache.commons.lang3.concurrent.BasicThreadFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import com.battery.business.service.ITestLiveService;
@@ -11,8 +12,23 @@
@Component
public class TestLiveStream {
private final ITestLiveService live;
- private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(2);
+ /**
+ * SSE 推送线程池显式创建并命名,便于按连接排查推送任务。
+ *
+ * <p>连接关闭后立即移除已取消的定点任务,避免取消任务在延迟队列里滞留到下一个周期。</p>
+ */
+ private final ScheduledThreadPoolExecutor scheduler = scheduler();
public TestLiveStream(ITestLiveService live) { this.live = live; }
+
+ private static ScheduledThreadPoolExecutor scheduler()
+ {
+ ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(2,
+ BasicThreadFactory.builder().namingPattern("sse-live-pool-%d").daemon(true).build());
+ executor.setRemoveOnCancelPolicy(true);
+ return executor;
+ }
+
+ /** 建立指定测试的 SSE 连接,先推一次当前状态,随后每 3 秒推一次;连接完成、超时或出错时取消该推送任务。 */
public SseEmitter stream(Long testId)
{
SseEmitter emitter = createEmitter();
--
Gitblit v1.7.1