fix(iot): 修复保洁规则处理器租户上下文丢失问题
使用 TenantUtils.execute 包装消息处理逻辑,确保 Redis Stream 异步线程中正确传递租户上下文,避免数据库查询时报错 "TenantContextHolder 不存在租户编号" Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user