Files
starRiverProperty/maven-cw-elevator-application/cw-elevator-application-service/docs/04-mqtt-visitor-event.md
T
反编译工作区 dee355b4a7 chore: 工作区反编译与 Maven/文档/脚本同步到发布分支
- artifacts/decompiled 树与相关源码变更
- maven-cw-elevator-application 业务 docs 与 package-info
- scripts 下 formatter 校验与辅助脚本
- 其他子工程/接口与发布线一并纳入版本控制

Made-with: Cursor

Former-commit-id: e102e8cab64e575bcd23c9a66a598aa1892bb492
2026-04-25 09:35:35 +08:00

2.3 KiB
Raw Blame History

04 MQTT、访客与域事件

4.1 双通道:访客查询

方式 路径/Bean 使用场景(本模块)
HTTP + RestTemplate combineAuthClientURI("intelligent/three/visitor/record/query") AcsElevatorRecordServiceImpl#add 反查是否访客
Feign VisitorFeignClient/intelligent/visitor/record/query 定义在 visitor/client本模块内无直接注入调用

两者 不是 同一路径;业务上均面向标准访客中心,但 「three」「intelligent」 为产品/版本差异,部署时需与 ninca-crk-std 实际路由一致。

4.2 MqttServiceMqttServiceImpl

说明
sendInfoToOne @Async:先 睡眠约 10s 等待识别记录落库,再查识别流水,拼 AcsElevatorRecordMqttParam,向 topic {businessId}+_elevator_record 发 JSON
远程 MqttFeignClient#publish → 设备第三方 MQTT 服务

调用关系:本模块中 AcsElevatorRecordServiceImpl 注入了 MqttService 但当前未调用;若产品要求「保存记录后推送大屏」,可在 监听 VisitorRecordPushEvent 的处理器add 成功后 显式调用 sendInfoToOne(需评估与异步睡眠设计是否一致)。

4.3 时序:MQTT 推送(当显式调用 sendInfoToOne 时)

sequenceDiagram
  participant Caller as 业务/监听器
  participant M as MqttServiceImpl
  participant DAO as AcsRecogRecordDao
  participant F as MqttFeignClient
  Caller->>M: sendInfoToOne(DTO)
  Note over M: sleep 10s
  M->>DAO: page(识别流水)
  DAO-->>M: 人名/标签
  M->>F: publish(topic, JSON)
  F-->>M: CloudwalkResult

4.4 状态机:从「仅事件」到「+ MQTT」(部署选项)

stateDiagram-v2
  [*] --> RecordSaved: add DAO 成功
  RecordSaved --> EventPublished: VisitorRecordPushEvent
  EventPublished --> MqttOptional: 可选
  MqttOptional --> MqttPush: 若接线 sendInfoToOne
  MqttOptional --> NoMqtt: 当前默认

4.5 域事件与 MQTT 解耦说明

  • VisitorRecordPushEventCloudwalkEventManager 发布,不保证 与 MQTT 同一步骤执行。
  • 下游可独立订阅 事件MQTT topic,避免强耦合。