86 lines
2.8 KiB
Markdown
86 lines
2.8 KiB
Markdown
|
|
# zmqc — ActiveMQ 消息消费者
|
|||
|
|
|
|||
|
|
## 概述
|
|||
|
|
|
|||
|
|
zmqc 是 EIS 系统中的 **ActiveMQ 消息消费服务**。它作为 ActiveMQ→ICE 的桥接器,监听 ActiveMQ 队列,将收到的消息通过 ICE 转发给对应的内部服务。
|
|||
|
|
|
|||
|
|
## 进程架构
|
|||
|
|
|
|||
|
|
zmqc 是 PACE 平台组件,注册 ICE 端点 `"baosight/zmqc"`。
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
ActiveMQ Broker
|
|||
|
|
│
|
|||
|
|
│ Queue: /queue/{UnitNo}_invokeModel
|
|||
|
|
│ Queue: /queue/{UnitNo}_eqpalg
|
|||
|
|
│ Queue: /queue/{UnitNo}_repair
|
|||
|
|
▼
|
|||
|
|
┌──────────────────────────┐
|
|||
|
|
│ zmqc │
|
|||
|
|
│ │
|
|||
|
|
│ 启动 3 个 ConsumerMQ 线程 │
|
|||
|
|
│ │
|
|||
|
|
│ tHDL4: invokeModel 队列 │──→ ICE SendDataShort(99999) → baosight/eqpalg-task
|
|||
|
|
│ tHDL2: eqpalg 队列 │──→ ICE SendDataShort(99999) → baosight/eqpalg-mon
|
|||
|
|
│ tHDL1: repair 队列 │──→ ICE SendDataShort(99999) → baosight/eqpm
|
|||
|
|
│ │
|
|||
|
|
└──────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 三个监听线程
|
|||
|
|
|
|||
|
|
| 线程 | ActiveMQ 目标 | ICE 代理目标 | 用途 |
|
|||
|
|
|------|-------------|-------------|------|
|
|||
|
|
| tHDL4 | `/queue/{UnitNo}_invokeModel` | `baosight/eqpalg-task` | 外部触发算法单次执行 |
|
|||
|
|
| tHDL2 | `/queue/{UnitNo}_eqpalg` | `baosight/eqpalg-mon` | 外部发送规则 CRUD 指令 |
|
|||
|
|
| tHDL1 | `/queue/{UnitNo}_repair` | `baosight/eqpm` | 外部触发设备点检更新 |
|
|||
|
|
|
|||
|
|
## ICE 接口
|
|||
|
|
|
|||
|
|
| 方法 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| `SendDataShort` | 空操作(zmqc 不做 ICE 服务端处理) |
|
|||
|
|
| `SendDataLong` | 未实现 |
|
|||
|
|
| `TimeNotify` | 未实现 |
|
|||
|
|
|
|||
|
|
zmqc 的核心逻辑在 **ICE 客户端角色** — 它通过 `ConsumerMQ` 线程从 ActiveMQ 接收消息,然后调用其他 ICE 服务的 `SendDataShort` 转发。
|
|||
|
|
|
|||
|
|
## ActiveMQ 连接
|
|||
|
|
|
|||
|
|
- **库**: Apache ActiveMQ-CPP 3.9.3
|
|||
|
|
- **配置**: 从 `CRGS` 配置文件读取 `[activemq]` 段的 `server` 属性
|
|||
|
|
- **模式**: 使用 Queue(点对点模式)
|
|||
|
|
|
|||
|
|
## 典型数据流
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
外部系统(Web UI 触发单次执行)
|
|||
|
|
│
|
|||
|
|
▼
|
|||
|
|
ActiveMQ Queue: /queue/C308_invokeModel
|
|||
|
|
│
|
|||
|
|
▼
|
|||
|
|
zmqc ConsumerMQ 线程 → ICE SendDataShort(99999, json)
|
|||
|
|
│
|
|||
|
|
▼
|
|||
|
|
eqpalg-task → AlgorithmManager::dispose() → exec_task()
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## MQ 桥接总结
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
外部系统 ──ActiveMQ──→ zmqc ──ICE──→ 内部服务 (eqpalg/eqpm)
|
|||
|
|
内部服务 ──ICE──→ zmqp ──ActiveMQ──→ 外部系统
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
zmqc + zmqp 共同构成了 **ICE ↔ ActiveMQ 双向桥接**。
|
|||
|
|
|
|||
|
|
## 源文件
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
src/zmqc/
|
|||
|
|
├── zmqc.cpp # PACE 组件入口
|
|||
|
|
├── ZmqcICEI.cpp # ICE servant + 启动3个消费线程
|
|||
|
|
└── ConsumerMQ.cpp # ActiveMQ 消费者线程(Topic/Queue 两种模式)
|
|||
|
|
```
|