eis/src/zmqp/zmqp_readme.md

86 lines
3.0 KiB
Markdown
Raw Normal View History

# 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 生产者封装
```