946 B
946 B
2026-06-11 工作日志
14. DeviceDataHandler 和 DeviceRegisterHandler 补充设备在线状态刷新
问题:之前只有 ACK 应答会调用 refreshDeviceOnline() 续期 Redis 中的设备在线状态。但设备只要上报电量或注册就证明在线,这两个场景没刷新在线缓存。后果:设备只上报数据不发 ACK 时,5 分钟后重试逻辑误判它为离线。
修复:
DeviceDataHandler.handle()→ 收到/publish/power后调用refreshDeviceOnline()DeviceRegisterHandler.handle()→ 注册后调用refreshDeviceOnline()- 两个 Handler 各自注入
MqttProperties,避免注入MqttCommandAckService引入新的循环依赖
在线判定覆盖(修复后):
| 触发方式 | 是否刷新在线状态 |
|---|---|
设备上报电量 /publish/power |
✅ 新增 |
设备注册 /publish/register |
✅ 新增 |
ACK 应答 /publish/ack |
✅ 原有 |