跳到主要内容

RabbitMQ 生产者

插件用途

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

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

功能入口

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

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

目标基本信息

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

目标属性

连接配置

参数默认值如何配置
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 中的交换机类型一致,可使用 directfanouttopicheaders。类型不一致时声明会失败。
交换机名称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 和正文渲染。

上传模板字段

在“上传模板配置”中分别为设备、变量、报警和插件事件选择 TextJson 模式并插入 ${字段名},保存前先执行预览;模板留空时使用默认 JSON 序列化。

数据类型可用字段
变量IdNameDeviceNameValueRawValueLastSetValueCollectGroupCollectTimeCreateTimeChangeTimeIsOnlineDataTypeUnitRegisterAddressOtherMethodDescriptionProtectTypeRpcWriteEnableRemark1Remark5ValueInitedIsMemory
设备IdNameActiveTimeDeviceStatusPluginNameDescriptionLastErrorMessageRemark1Remark5
报警AlarmIdVariableIdNameDeviceNameAlarmCodeAlarmLevelAlarmLimitAlarmTextRecoveryCodeAlarmTimeEventTimeFinishTimeConfirmTimeConfirmTextAlarmTypeEventTypeRemark1Remark5
插件事件DeviceNameObjectValue

实体脚本会先改变上传对象,再参与 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 语法、占位符和实体脚本输出。

相关操作

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