fix(iot-server): 消费者优先判断skipReply字段

- handleUpstreamDeviceMessage 优先检查 skipReply 字段
- 协议层已处理回复的消息跳过业务层回复逻辑

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
lzh
2026-01-21 22:12:56 +08:00
parent 0c2cd85915
commit 110cfc8cf8

View File

@@ -169,10 +169,12 @@ public class IotDeviceMessageServiceImpl implements IotDeviceMessageService {
getSelf().createDeviceLogAsync(message);
// 3. 回复消息。前提:非 _reply 消息,并且非禁用回复的消息
// 条件1防止对"回复消息"再次回复,避免无限循环
// 条件2某些特定的method不需要回复如设备状态变更、OTA进度上报
// 条件3新增HTTP短连接场景因为已经在请求中直接响应了不需要再通过消息总线发送回复
if (IotDeviceMessageUtils.isReplyMessage(message)
// 条件1协议层已处理回复skipReply=true业务层无需再回复
// 条件2防止对"回复消息"再次回复,避免无限循环
// 条件3某些特定的method不需要回复如设备状态变更、OTA进度上报
// 条件4HTTP短连接场景因为已经在请求中直接响应了不需要再通过消息总线发送回复
if (IotDeviceMessageUtils.isSkipReply(message)
|| IotDeviceMessageUtils.isReplyMessage(message)
|| IotDeviceMessageMethodEnum.isReplyDisabled(message.getMethod())
|| StrUtil.isEmpty(message.getServerId())) {
return; // serverId 为空,不记录回复消息