From 42c620d87a83448a0553e11c8239577d6b5a96e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?= Date: Thu, 18 Dec 2025 18:24:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=BB=98=E8=AE=A4=E8=B6=85?= =?UTF-8?q?=E6=97=B6=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/tuoheng/machine/command/Transaction.java | 2 +- .../machine/instruction/CallbackConfig.java | 2 +- .../tuoheng/machine/instruction/Instruction.java | 2 +- .../tuoheng/machine/mqtt/MqttCallbackRegistry.java | 14 ++++++++++++++ .../machine/ComprehensiveDrcStateMachineTest.java | 9 +++++++++ 5 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/tuoheng/machine/command/Transaction.java b/src/main/java/com/tuoheng/machine/command/Transaction.java index d2002bf..00b5627 100644 --- a/src/main/java/com/tuoheng/machine/command/Transaction.java +++ b/src/main/java/com/tuoheng/machine/command/Transaction.java @@ -26,7 +26,7 @@ public class Transaction { /** * 事务超时时间(毫秒) */ - private long timeoutMs = 10000; // 默认10秒 + private long timeoutMs = 20000; // 默认10秒 public Transaction(String name, CommandType commandType) { this.name = name; diff --git a/src/main/java/com/tuoheng/machine/instruction/CallbackConfig.java b/src/main/java/com/tuoheng/machine/instruction/CallbackConfig.java index 41e8ea0..ebc599e 100644 --- a/src/main/java/com/tuoheng/machine/instruction/CallbackConfig.java +++ b/src/main/java/com/tuoheng/machine/instruction/CallbackConfig.java @@ -40,7 +40,7 @@ public class CallbackConfig { * 超时时间(毫秒) */ @Builder.Default - private long timeoutMs = 3000; + private long timeoutMs = 10000; /** * 事务ID字段路径(用于匹配回调消息,如 "tid") diff --git a/src/main/java/com/tuoheng/machine/instruction/Instruction.java b/src/main/java/com/tuoheng/machine/instruction/Instruction.java index fc85060..597f407 100644 --- a/src/main/java/com/tuoheng/machine/instruction/Instruction.java +++ b/src/main/java/com/tuoheng/machine/instruction/Instruction.java @@ -43,7 +43,7 @@ public interface Instruction { * 获取指令超时时间(毫秒) */ default long getTimeoutMs() { - return 60000; // 默认60秒 + return 1000; // 默认10秒 } /** diff --git a/src/main/java/com/tuoheng/machine/mqtt/MqttCallbackRegistry.java b/src/main/java/com/tuoheng/machine/mqtt/MqttCallbackRegistry.java index 250c536..cd8de92 100644 --- a/src/main/java/com/tuoheng/machine/mqtt/MqttCallbackRegistry.java +++ b/src/main/java/com/tuoheng/machine/mqtt/MqttCallbackRegistry.java @@ -342,4 +342,18 @@ public class MqttCallbackRegistry { public int getCallbackCount() { return localHandlers.size(); } + + /** + * 清理所有回调(仅用于测试环境) + * 警告:此方法会清理所有回调,包括未超时的,仅应在测试环境中使用 + */ + public void cleanupAllCallbacks() { + List allCallbacks = callbackStore.getAllCallbacks(); + for (MqttCallbackInfo callbackInfo : allCallbacks) { + log.debug("清理MQTT回调: callbackId={}, topic={}", + callbackInfo.getCallbackId(), callbackInfo.getTopic()); + unregisterCallback(callbackInfo.getCallbackId()); + } + log.info("已清理所有MQTT回调,共{}个", allCallbacks.size()); + } } diff --git a/src/test/java/com/tuoheng/machine/ComprehensiveDrcStateMachineTest.java b/src/test/java/com/tuoheng/machine/ComprehensiveDrcStateMachineTest.java index 8fa9384..3f06c74 100644 --- a/src/test/java/com/tuoheng/machine/ComprehensiveDrcStateMachineTest.java +++ b/src/test/java/com/tuoheng/machine/ComprehensiveDrcStateMachineTest.java @@ -78,6 +78,15 @@ public class ComprehensiveDrcStateMachineTest { log.info("\n========================================"); log.info("完成测试: {}", testInfo.getDisplayName()); log.info("========================================\n\n"); + + // 清理所有回调,避免影响后续测试 + try { + Thread.sleep(200); // 等待当前测试的回调完成 + mqttCallbackRegistry.cleanupAllCallbacks(); + log.info("已清理所有回调,准备下一个测试"); + } catch (InterruptedException e) { + log.warn("清理回调时被中断", e); + } } /**