跳到主要内容

RabbitMQ 生产者

插件用途​

将变量、设备、报警和插件事件发布到 RabbitMQ 交换机,并通过路由键送入队列。

转发组范围、触发、分批、缓存和启停见数据转发。本页只说明 RabbitMQ 连接、交换机、路由、模板和专用调试。

功能入口​

进入“开发配置 → 数据转发”,按以下顺序配置:

  1. 新增或编辑转发组,先保存变量范围、触发模式、定时间隔、在线过滤和批处理策略。
  2. 新增目标,选择“RabbitMQ 生产者”,填写目标名称、启用状态、日志级别和启动超时。
  3. 打开“目标属性”,按连接配置、安全认证、消息配置、数据与脚本、缓存容量的顺序填写。
  4. 保存并启用转发组和目标,再使用“目标调试”验证交换机、路由键和消息正文。

目标基本信息​

参数默认值如何配置
所属转发组-必须选择已保存的转发组;目标只接收该组范围内的变量。
目标名称-必填,同一转发组内不能重复。建议包含 RabbitMQ 集群和环境名称。
启用开启关闭时 RabbitMQ 生产者不会建立连接。
日志级别Info排查连接、声明或发布问题时临时使用 Debug,完成后恢复。
启动超时60 秒页面可填 1~3600 秒。

目标属性​

连接配置​

参数默认值如何配置
IP地址localhost填 RabbitMQ 主机名或 IP,不要带协议前缀。
端口5672AMQP 明文默认端口;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模板TGateway/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 暂不可达时保留数据并在恢复后补发。
缓存文件最大行数262144CacheDB 出站记录上限,超过后删除最旧数据。
上传分片大小2000每次取出的最大记录数;Broker 较慢时减小。
内存队列上限100000内存缓冲上限,超过后优先转入 CacheDB,持续超限仍可能丢弃旧数据。
过滤离线数据关闭开启后目标出队时过滤离线变量;转发组在线过滤也会生效。
并发上传数量1RabbitMQ 会按该值维护 Channel 池。先保持 1,确认 Broker 可承受后再提高。

目标调试​

进入“开发配置 → 数据转发”,选择 RabbitMQ 目标,打开“调试 → 协议调试 · RabbitMq”。

功能作用
RabbitMQ 协议调试使用测试路由键和小型正文检查连接、发布确认和路由结果。

RabbitMQ 生产者专用调试面板

不要在日常调试中随意声明或删除生产交换机和队列,除非已得到 Broker 管理员批准。

验证方法​

  1. 确认主机、端口、Virtual Host、账号、交换机和交换机类型。
  2. 确认交换机、队列和绑定已存在,或目标具有声明权限。
  3. 使用测试路由键和小型正文发送消息。
  4. 从测试队列消费消息,核对条数和正文。
  5. 检查发布确认、路由结果和目标日志。

常见问题​

现象检查方法
队列没有消息主机、Virtual Host、交换机、类型、路由键、队列绑定和目标状态。
认证失败用户名、密码、Virtual Host 权限和 RabbitMQ Listener。
路由失败交换机类型、路由键、队列绑定和“要求路由成功”。
声明资源失败账号权限、已有资源类型、资源名称和声明开关。
发布超时Broker 网络、发布确认、接收端负载和发布超时。
正文无效模板预览、JSON 语法、占位符和实体脚本输出。

相关操作​

  • 数据转发:配置转发组、触发、缓存和公共目标操作。
  • 插件索引:查找其它采集或数据转发插件。