From eae021c464b09a93a23afc1c09ccf65131fa98ce Mon Sep 17 00:00:00 2001 From: lzh Date: Tue, 27 Jan 2026 17:01:57 +0800 Subject: [PATCH] =?UTF-8?q?fix(iot):=20=E4=BF=AE=E5=A4=8D=E4=BF=9D?= =?UTF-8?q?=E6=B4=81=E8=A7=84=E5=88=99=E5=A4=84=E7=90=86=E5=99=A8=E7=A7=9F?= =?UTF-8?q?=E6=88=B7=E4=B8=8A=E4=B8=8B=E6=96=87=E4=B8=A2=E5=A4=B1=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 使用 TenantUtils.execute 包装消息处理逻辑,确保 Redis Stream 异步线程中正确传递租户上下文,避免数据库查询时报错 "TenantContextHolder 不存在租户编号" Co-Authored-By: Claude Opus 4.5 --- .../rule/IotCleanRuleMessageHandler.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/viewsh-module-iot/viewsh-module-iot-server/src/main/java/com/viewsh/module/iot/mq/consumer/rule/IotCleanRuleMessageHandler.java b/viewsh-module-iot/viewsh-module-iot-server/src/main/java/com/viewsh/module/iot/mq/consumer/rule/IotCleanRuleMessageHandler.java index c747bba..c4175f1 100644 --- a/viewsh-module-iot/viewsh-module-iot-server/src/main/java/com/viewsh/module/iot/mq/consumer/rule/IotCleanRuleMessageHandler.java +++ b/viewsh-module-iot/viewsh-module-iot-server/src/main/java/com/viewsh/module/iot/mq/consumer/rule/IotCleanRuleMessageHandler.java @@ -1,5 +1,6 @@ package com.viewsh.module.iot.mq.consumer.rule; +import com.viewsh.framework.tenant.core.util.TenantUtils; import com.viewsh.module.iot.core.messagebus.core.IotMessageBus; import com.viewsh.module.iot.core.messagebus.core.IotMessageSubscriber; import com.viewsh.module.iot.core.mq.message.IotDeviceMessage; @@ -13,7 +14,7 @@ import org.springframework.stereotype.Component; * 保洁规则消息处理器 *

* 订阅设备消息总线,独立处理保洁相关规则,与属性保存解耦 - * + * * 优化点: * 1. 独立消费组,不阻塞属性保存主流程 * 2. 与场景规则引擎架构一致,便于维护 @@ -48,12 +49,14 @@ public class IotCleanRuleMessageHandler implements IotMessageSubscriber { + try { + cleanRuleProcessorManager.processMessage(message); + } catch (Exception e) { + // 规则处理异常不影响其他消息处理 + log.error("[onMessage][消息({}) 保洁规则处理异常]", message.getRequestId(), e); + } + }); } }