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; 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.IotMessageBus;
import com.viewsh.module.iot.core.messagebus.core.IotMessageSubscriber; import com.viewsh.module.iot.core.messagebus.core.IotMessageSubscriber;
import com.viewsh.module.iot.core.mq.message.IotDeviceMessage; import com.viewsh.module.iot.core.mq.message.IotDeviceMessage;
@@ -48,12 +49,14 @@ public class IotCleanRuleMessageHandler implements IotMessageSubscriber<IotDevic
@Override @Override
public void onMessage(IotDeviceMessage message) { public void onMessage(IotDeviceMessage message) {
try { TenantUtils.execute(message.getTenantId(), () -> {
cleanRuleProcessorManager.processMessage(message); try {
} catch (Exception e) { cleanRuleProcessorManager.processMessage(message);
// 规则处理异常不影响其他消息处理 } catch (Exception e) {
log.error("[onMessage][消息({}) 保洁规则处理异常]", message.getRequestId(), e); // 规则处理异常不影响其他消息处理
} log.error("[onMessage][消息({}) 保洁规则处理异常]", message.getRequestId(), e);
}
});
} }
} }