大疆无人机3topic代码监听流程

① MQTT 消息接入
┌──────────────────────────┐
│ 大疆无人机/机场设备 │
│ 发布 topic: │
│ thing/product/SN123/osd │
└──────────┬───────────────┘
│ MQTT协议

② MqttPahoMessageDrivenChannelAdapter
(MqttConfiguration.java:61)
输出通道 → "inbound" (ExecutorChannel)


③ InboundMessageRouter.determineTargetChannels()
(InboundMessageRouter.java:45)
@Router(inputChannel = "inbound")

│ 正则匹配 topic → CloudApiTopicEnum.OSD
│ beanName = "inboundOsd"

│ SpringBeanUtils.getBean("inboundOsd")
│ 返回 → ExecutorChannel("inboundOsd")


④ OsdRouter.osdRouterHandler()
(OsdRouter.java:74)
@ServiceActivator(inputChannel = "inboundOsd")

│ 1. 解析 JSON → TopicOsdRequest
│ 2. 从 from/gateway 判断设备类型
│ 3. OsdDeviceTypeEnum.find() → DOCK_DRONE
│ 4. 转换数据类型 → TopicOsdRequest<OsdDockDrone>
│ 5. 发送到子通道 "inboundOsdDockDrone"


⑤ AbstractDeviceService.osdDockDrone()
(AbstractDeviceService.java:61)
@ServiceActivator(inputChannel = "inboundOsdDockDrone")

│ throw new UnsupportedOperationException()
│ (抽象类中仅占位,实际被子类覆盖)


⑥ SDKDeviceService.osdDockDrone() ← 真正干活的地方
(drone-manage/SDKDeviceService.java:159)
继承 AbstractDeviceService,Override 此方法
→ 存入 Redis、推送 WebSocket、写入 InfluxDB

posted @ 2026-04-30 11:33  每天进步一点点_hejj  阅读(0)  评论(0)    收藏  举报