fix(iot): 修复保洁规则处理器租户上下文丢失问题
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled

使用 TenantUtils.execute 包装消息处理逻辑,确保 Redis Stream
异步线程中正确传递租户上下文,避免数据库查询时报错
"TenantContextHolder 不存在租户编号"

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
lzh
2026-01-27 17:01:57 +08:00
parent b5972b03a8
commit eae021c464

View File

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