- EIS_README.md: Overall project architecture, data flow, service inventory - zmqp/zmqc_readme: ActiveMQ producer/consumer bridging ICE - zcache_readme: Data cache hub with address mapping and type conversion - zhd_readme: Real-time snapshot persistence to iHyperDB - zinit_readme: DB2-to-shared-memory initialization service - zsub/zudp/zdsf/rcv_readme: Data receiver layer for different on-site protocols
3.0 KiB
3.0 KiB
zmqp — ActiveMQ 消息生产者
概述
zmqp 是 EIS 系统中的 ActiveMQ 消息发布服务。它作为 ICE→ActiveMQ 的桥接器,其他进程通过 ICE 调用 SendDataShort,zmqp 将消息发布到 ActiveMQ Topic,供外部系统消费。
进程架构
zmqp 是 PACE 平台组件,注册 ICE 端点 "baosight/zmqp"。
eqpalg / zad / ztrk
│
│ ICE SendDataShort(eventNo, data)
▼
┌──────────────────────────┐
│ zmqp │
│ │
│ ZmqpICEI::SendDataShort │
│ │ │
│ ├→ eventNo=911 ────→ ActiveMQ Topic: {UnitNo}_EIS_RuleTopic
│ ├→ eventNo=912 ────→ ActiveMQ Topic: {UnitNo}_EMS_TaskTopic
│ ├→ eventNo=601 ────→ ActiveMQ Topic: {UnitNo}_ems_eqpalg
│ ├→ eventNo=602 ────→ ActiveMQ Topic: {UnitNo}_ems_eqpstats
│ ├→ eventNo=101 ────→ ActiveMQ Topic: {UnitNo}_backToStaParams
│ └→ ...其他事件号 → 对应 Topic
│ │
└──────────────────────────┘
ICE 接口
| 方法 | 说明 |
|---|---|
SendDataShort(eventNo, seq) |
核心接口,根据 eventNo 将消息发布到对应的 ActiveMQ Topic |
SendDataLong |
未实现 |
TimeNotify |
调试用,向 RuleTopic 发送测试消息 |
事件号与 Topic 映射
| eventNo | 常量 | Topic 后缀 | 用途 |
|---|---|---|---|
| 911 | EV_MQP_EQPALGMON |
_EIS_RuleTopic |
eqpalg-mon 报警信息 |
| 912 | EV_MQP_EQPALGTASK |
_EMS_TaskTopic |
eqpalg-task 计算结果 |
| 601 | EV_MQP_EQPALG |
_ems_eqpalg |
设备算法消息 |
| 602 | EV_MQP_EQPSTATS |
_ems_eqpstats |
设备统计信息 |
| — | EV_MQP_ZONETRK |
_zonetrk |
区域跟踪 |
| — | EV_MQP_TAGMSG |
_tagmsg |
标签消息 |
| — | EV_MQP_ITEMTAG |
_itemtag |
测点标签 |
| — | EV_MQP_PDILIST |
_pdilist |
PDI 列表 |
| — | EV_MQP_PDOLIST |
_pdolist |
PDO 列表 |
| — | EV_MQP_RULEMSG |
_RuleTopic |
规则消息 |
| 101 | — | _backToStaParams |
统计参数回传 |
所有 Topic 名称格式: {UnitNo}_{suffix}(如 C308_EIS_RuleTopic)。
ActiveMQ 连接
- 库: Apache ActiveMQ-CPP 3.9.3
- 配置: 从
CRGS配置文件读取[activemq]段的server属性 - 模式: 默认使用 Topic(
istopic=true),非持久化投递
典型数据流
eqpalg 检测到报警
│
▼
alarm_poster → ICE SendDataShort(911, alarm_json)
│
▼
zmqp → ProducerMQ::Publish("{UnitNo}_EIS_RuleTopic", alarm_json)
│
▼
ActiveMQ Broker → 外部系统(Web UI / 第三方告警平台)
源文件
src/zmqp/
├── zmqp.cpp # PACE 组件入口
├── ZmqpICEI.cpp # ICE servant: 事件号→Topic 路由
└── ProducerMQ.cpp # ActiveMQ 生产者封装