ZeroMQ 生产者
插件用途
通过 ZeroMQ Socket 发布变量、设备、报警和插件事件,适合进程间或局域网内的低开销消息传输。配置页面中的插件名称为“ZeroMQProducer”。
转发组范围、触发、分批、缓存和启停见数据转发。本页只说明 ZeroMQ 地址、Socket、绑定方式、Topic 模板和专用调试。
功能入口
进入“开发配置 → 数据转发”,按以下顺序配置:
- 保存转发组变量范围、触发、定时间隔、在线过滤和批处理策略。
- 新增目标,选择“ZeroMQProducer”,填写目标基本信息。
- 打开“目标属性”,配置 Endpoint、Socket、绑定方式、高水位、Topic、模板和缓存。
- 保存并启用目标,使用匹配的测试接收端订阅或拉取消息,再打开目标调试。
目标基本信息
| 参数 | 默认值 | 如何配置 |
|---|---|---|
| 所属转发组 | - | 必须选择已保存的转发组。 |
| 目标名称 | - | 必填,同组唯一。 |
| 启用 | 开启 | 关闭时不会创建 ZeroMQ Socket。 |
| 日志级别 | Info | 排查 Endpoint、连接或发送问题时临时使用 Debug。 |
| 启动超时 | 60 秒 | 页面可填 1~3600 秒。 |
目标属性
连接与容量
| 参数 | 默认值 | 如何配置 |
|---|---|---|
| 连接地址 | tcp://127.0.0.1:5555 | 填 ZeroMQ Endpoint,如 tcp://主机:端口、ipc://文件 或部署支持的其它协议。发送端和接收端必须使用同一个地址。 |
| Socket类型 | Pub | 当前支持 Pub(发布/订阅)、Push(推送/拉取)和 Dealer(异步请求/响应)。必须与接收端 Socket 类型匹配。 |
| 绑定模式 | 开启 | 开启时本目标 Bind 地址;关闭时本目标 Connect 已监听的地址。同一 Endpoint 只能由一端 Bind。 |
| 高水位标记 | 1000 | Socket 发送队列上限。接收端处理较慢时,达到上限可能阻塞或丢弃消息。 |
ZeroMQ Socket 发送成功只表示本地 Socket 接受了消息,不确认对端已经收到;需要端到端确认时,使用 Dealer 与应用层 ACK 协议。
Topic 模板
| 参数 | 默认值 | 如何配置 |
|---|---|---|
| 设备Topic模板 | 空 | 设备消息前缀/Topic。留空则不发布设备模型;可使用 ${Name} 等设备字段。 |
| 变量Topic模板 | ThingsGateway/Variable | 变量消息前缀/Topic;可使用 ${DeviceName}、${Name}。 |
| 报警Topic模板 | 空 | 报警消息前缀/Topic;留空则不发布报警模型。 |
| 插件事件Topic模板 | 空 | 插件事件前缀/Topic;留空则不发布插件事件模型。 |
Topic 模板中的 ${字段名} 必须存在于对应实体或实体脚本结果中。转发组决定哪些变量进入目标;Topic 决定消息类别和接收端的订阅条件。
目标变量属性
ZeroMQ 提供通用的 数据1 至 数据10 十个可选文本字段,默认为空,不会自动加入消息。变量范围、别名、触发和分批在数据转发中配置。
| 参数 | 默认值 | 如何配置 |
|---|---|---|
| 数据1~数据10 | 空 | 按项目约定保存附加文本;需要发送时在实体脚本或上传模板中显式引用。 |
数据与脚本
| 参数 | 默认值 | 如何配置 |
|---|---|---|
| 详细日志 | 关闭 | 开启后记录每次发送的正文或计数,短时间排查使用。 |
| JSON缩进格式化 | 开启 | 关闭可减小 payload。 |
| JSON忽略Null | 开启 | 关闭后保留 null 字段。 |
| 设备列表上传 | 开启 | 设备数据按列表发布;关闭则逐条发布。 |
| 变量列表上传 | 开启 | 变量数据按列表发布;关闭则逐条发布。 |
| 变量字典上传 | 关闭 | 仅变量列表开启时生效,按 DeviceName → Name → Value 组织。 |
| 报警列表上传 | 开启 | 报警数据按列表发布;关闭则逐条发布。 |
| 报警字典上传 | 关闭 | 仅报警列表开启时生效,按设备和变量组织。 |
| 插件事件列表上传 | 开启 | 插件事件按列表发布;关闭则逐条发布。 |
| 设备/变量/报警/插件事件实体脚本 | 空 | 选择脚本改写发送实体,再参与 Topic 和 payload 渲染。 |
上传模板字段
在“上传模板配置”中为每类实体选择 Text 或 Json 并填写 ${字段名} 模板;留空使用默认 JSON 序列化。可用字段见Kafka 生产者模板字段。
缓存与容量
| 参数 | 默认值 | 如何配置 |
|---|---|---|
| 启用失败重试缓存 | 开启 | Socket 发送失败时保留数据并在恢复后补发。 |
| 缓存文件最大行数 | 262144 | CacheDB 出站记录上限,超过后删除最旧数据。 |
| 上传分片大小 | 2000 | 每次从缓存取出的最大记录数。 |
| 内存队列上限 | 100000 | 内存缓冲上限,持续超限仍可能丢弃旧数据。 |
| 过滤离线数据 | 关闭 | 开启后过滤离线变量;转发组在线过滤也会生效。 |
| 并发上传数量 | 1 | ZeroMQ Socket 非线程安全,插件会将大于 1 的值降为 1。 |
上传模板字段
在“上传模板配置”中选择 Text 或 JSON 模式并插入 ${字段名},保存前先执行预览。
| 数据类型 | 可用字段 |
|---|---|
| 变量 | Id、Name、DeviceName、Value、CollectGroup、CollectTime、ChangeTime、IsOnline、DataType、Unit、RegisterAddress、Remark1 |
| 设备 | Id、Name、ActiveTime、DeviceStatus、PluginName、Description、LastErrorMessage、Remark1 |
| 报警 | AlarmId、VariableId、Name、DeviceName、AlarmCode、AlarmLevel、AlarmLimit、AlarmText、RecoveryCode、AlarmTime、EventTime、AlarmType、EventType、Remark1 |
| 插件事件 | DeviceName、ObjectValue |
目标调试
进入“开发配置 → 数据转发”,选择 ZeroMQ 目标,打开“调试 → 协议调试 · ZeroMq”。
| 功能 | 作用 |
|---|---|
| ZeroMQ 协议调试 | 检查 Endpoint、绑定模式、Topic 和测试消息发布结果。 |

验证方法
- 启动 Socket 类型和地址匹配的测试订阅端。
- 确认只有一端 Bind,另一端使用 Connect。
- 让一个转发范围内的测试变量产生新值。
- 在订阅端核对 Topic、正文和消息条数。
- 接收端较慢时检查高水位标记和目标日志。
常见问题
| 现象 | 检查方法 |
|---|---|
| 订阅端没有消息 | Endpoint、Socket 类型、绑定模式、防火墙、订阅条件和转发组范围。 |
| 地址已被占用 | 确认只有一个进程 Bind;另一端改为 Connect 或更换地址。 |
| 消息延迟或丢失 | 接收速度、高水位标记、网络和目标日志。 |
| Topic 不正确 | Topic 模板、${字段名}、实体值和当前目标。 |
| 正文无效 | 模板预览、JSON 语法、占位符和实体脚本输出。 |