RabbitMQ 生产者
插件用途
将变量、设备、报警和插件事件发布到 RabbitMQ 交换机,并通过路由键送入队列。
转发组范围、触发、分批、缓存和启停见数据转发。本页只说明 RabbitMQ 连接、交换机、路由、模板和专用调试。
功能入口
进入“开发配置 → 数据转发”,按以下顺序配置:
- 新增或编辑转发组,先保存变量范围、触发模式、定时间隔、在线过滤和批处理策略。
- 新增目标,选择“RabbitMQ 生产者”,填写目标名称、启用状态、日志级别和启动超时。
- 打开“目标属性”,按连接配置、安全认证、消息配置、数据与脚本、缓存容量的顺序填写。
- 保存并启用转发组和目标,再使用“目标调试”验证交换机、路由键和消息正文。
目标基本信息
| 参数 | 默认值 | 如何配置 |
|---|---|---|
| 所属转发组 | - | 必须选择已保存的转发组;目标只接收该组范围内的变量。 |
| 目标名称 | - | 必填,同一转发组内不能重复。建议包含 RabbitMQ 集群和环境名称。 |
| 启用 | 开启 | 关闭时 RabbitMQ 生产者不会建立连接。 |
| 日志级别 | Info | 排查连接、声明或发布问题时临时使用 Debug,完成后恢复。 |
| 启动超时 | 60 秒 | 页面可填 1~3600 秒。 |
目标属性
连接配置
| 参数 | 默认值 | 如何配置 |
|---|---|---|
| IP地址 | localhost | 填 RabbitMQ 主机名或 IP,不要带协议前缀。 |
| 端口 | 5672 | AMQP 明文默认端口;TLS 端口按 RabbitMQ Listener 配置填写。当前插件只使用主机、端口、虚拟主机和账号配置连接。 |
| 虚拟主机 | / | 填交换机、队列和绑定所在的 Virtual Host。账号必须具有该 vhost 的访问权限。 |
安全认证
| 参数 | 默认值 | 如何配置 |
|---|---|---|
| 用户名 | guest | 开发环境可使用默认账号;生产环境应创建最小权限专用账号。 |
| 密码 | guest | 与用户名配套。生产环境必须修改默认密码,并避免写入截图、模板或日志。 |
本插件属性中没有单独的 TLS 证书、TLS 开关或连接字符串字段。需要 TLS 时,应使用 RabbitMQ 已配置的安全 Listener,并确认当前版本的连接工厂配置与部署方式匹配。
消息配置
| 参数 | 默认值 | 如何配置 |
|---|---|---|
| 声明队列 | 关闭 | 开启后,目标启动时按非空 Topic 模板逐个声明持久队列,并使用同名字符串作为交换机绑定的 routing key。仅当网关账号被允许管理队列时开启。 |
| 声明交换机 | 关闭 | 开启后目标启动时声明持久、非自动删除交换机;已有交换机的类型必须与“交换机类型”一致。由管理员统一维护资源时保持关闭。 |
| 启用发布确认 | 开启 | 开启后使用带 publisher confirm 的 Channel,等待 Broker 确认发布;关闭可降低等待但不能确认 Broker 已接收。 |
| 要求路由成功 | 开启 | 发布使用 mandatory 标志;没有任何队列匹配 routing key 时按失败处理。调试阶段建议保持开启。 |
| 交换机类型 | topic | 必须与 RabbitMQ 中的交换机类型一致,可使用 direct、fanout、topic 或 headers。类型不一致时声明会失败。 |
| 交换机名称 | TG | 填目标交换机名称。声明交换机关闭时,必须提前在该 Virtual Host 创建。 |
| 发布超时时间 | 5000 毫秒 | 单次发布和 Channel 获取的等待上限,填写正整数;超时会交给缓存和失败策略处理。 |
路由键模板
| 参数 | 默认值 | 如何配置 |
|---|---|---|
| 设备Topic模板 | 空 | 设备消息 routing key。留空则不发布设备模型;可使用设备实体字段 ${Name} 等。 |
| 变量Topic模板 | ThingsGateway/Variable | 变量消息 routing key。可使用 ${DeviceName}、${Name} 等变量字段。 |
| 报警Topic模板 | 空 | 报警消息 routing key。留空则不发布报警模型。 |
| 插件事件Topic模板 | 空 | 插件事件 routing key。留空则不发布插件事件模型。 |
Topic 模板中的 ${字段名} 必须存在于对应上传实体或实体脚本结果中。转发组决定哪些变量进入目标;交换机、routing key 和队列绑定共同决定消息进入哪个队列。若开启“声明队列”,建议使用固定 routing key,而不是带 ${} 的动态模板。
目标变量属性
RabbitMQ 生产者提供通用的 数据1 至 数据10 十个可选文本字段,默认为空。RabbitMQ 默认不会自动把这些字段加入消息;变量范围、别名、触发和分批仍在数据转发中配置。
| 参数 | 默认值 | 如何配置 |
|---|---|---|
| 数据1~数据10 | 空 | 按项目约定填写附加文本;不需要时留空,不要放入密码或 Token。 |
数据与脚本
| 参数 | 默认值 | 如何配置 |
|---|---|---|
| 详细日志 | 关闭 | 开启后记录每次发布的正文或计数,短时间排查使用。 |
| JSON缩进格式化 | 开启 | 关闭可减小消息体,开启便于人工查看。 |
| JSON忽略Null | 开启 | 关闭后保留 JSON 中的 null 字段。 |
| 设备列表上传 | 开启 | 设备消息按列表发布;关闭则逐条发布。 |
| 变量列表上传 | 开启 | 变量消息按列表发布;关闭则逐条发布。 |
| 变量字典上传 | 关闭 | 仅变量列表开启时生效,按 DeviceName → Name → Value 组织。 |
| 报警列表上传 | 开启 | 报警消息按列表发布;关闭则逐条发布。 |
| 报警字典上传 | 关闭 | 仅报警列表开启时生效,按设备和变量组织。 |
| 插件事件列表上传 | 开启 | 插件事件按列表发布;关闭则逐条发布。 |
| 设备/变量/报警/插件事件实体脚本 | 空 | 从表达式选择器选择对应脚本,输出对象再参与 routing key 和正文渲染。 |
上传模板字段
在“上传模板配置”中分别为设备、变量、报警和插件事件选择 Text 或 Json 模式并插入 ${字段名},保存前先执行预览;模板留空时使用默认 JSON 序列化。
| 数据类型 | 可用字段 |
|---|---|
| 变量 | Id、Name、DeviceName、Value、RawValue、LastSetValue、CollectGroup、CollectTime、CreateTime、ChangeTime、IsOnline、DataType、Unit、RegisterAddress、OtherMethod、Description、ProtectType、RpcWriteEnable、Remark1~Remark5、ValueInited、IsMemory |
| 设备 | Id、Name、ActiveTime、DeviceStatus、PluginName、Description、LastErrorMessage、Remark1~Remark5 |
| 报警 | AlarmId、VariableId、Name、DeviceName、AlarmCode、AlarmLevel、AlarmLimit、AlarmText、RecoveryCode、AlarmTime、EventTime、FinishTime、ConfirmTime、ConfirmText、AlarmType、EventType、Remark1~Remark5 |
| 插件事件 | DeviceName、ObjectValue |
实体脚本会先改变上传对象,再参与 routing key 和模板渲染;对应 Topic 模板留空时,该类数据不会发布。
缓存与容量
| 参数 | 默认值 | 如何配置 |
|---|---|---|
| 启用失败重试缓存 | 开启 | 建议保持开启,Broker 暂不可达时保留数据并在恢复后补发。 |
| 缓存文件最大行数 | 262144 | CacheDB 出站记录上限,超过后删除最旧数据。 |
| 上传分片大小 | 2000 | 每次取出的最大记录数;Broker 较慢时减小。 |
| 内存队列上限 | 100000 | 内存缓冲上限,超过后优先转入 CacheDB,持续超限仍可能丢弃旧数据。 |
| 过滤离线数据 | 关闭 | 开启后目标出队时过滤离线变量;转发组在线过滤也会生效。 |
| 并发上传数量 | 1 | RabbitMQ 会按该值维护 Channel 池。先保持 1,确认 Broker 可承受后再提高。 |
目标调试
进入“开发配置 → 数据转发”,选择 RabbitMQ 目标,打开“调试 → 协议调试 · RabbitMq”。
| 功能 | 作用 |
|---|---|
| RabbitMQ 协议调试 | 使用测试路由键和小型正文检查连接、发布确认和路由结果。 |

不要在日常调试中随意声明或删除生产交换机和队列,除非已得到 Broker 管理员批准。
验证方法
- 确认主机、端口、Virtual Host、账号、交换机和交换机类型。
- 确认交换机、队列和绑定已存在,或目标具有声明权限。
- 使用测试路由键和小型正文发送消息。
- 从测试队列消费消息,核对条数和正文。
- 检查发布确认、路由结果和目标日志。
常见问题
| 现象 | 检查方法 |
|---|---|
| 队列没有消息 | 主机、Virtual Host、交换机、类型、路由键、队列绑定和目标状态。 |
| 认证失败 | 用户名、密码、Virtual Host 权限和 RabbitMQ Listener。 |
| 路由失败 | 交换机类型、路由键、队列绑定和“要求路由成功”。 |
| 声明资源失败 | 账号权限、已有资源类型、资源名称和声明开关。 |
| 发布超时 | Broker 网络、发布确认、接收端负载和发布超时。 |
| 正文无效 | 模板预览、JSON 语法、占位符和实体脚本输出。 |