跳到主要内容

MQTT 服务端转发

插件用途

启动内置 MQTT Server,向已连接客户端发布变量、设备、报警和插件事件,并按权限处理变量 RPC 写入和历史读取请求。

转发组范围、触发、分批、缓存和启停见数据转发。本页只说明监听、TLS、客户端限制、Topic、RPC、模板和服务端调试。

功能入口

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

  1. 保存转发组范围、触发、定时间隔、在线过滤和批处理策略。
  2. 新增目标,选择“MQTT 服务端转发”,填写目标基本信息。
  3. 打开“目标属性”,配置监听、安全认证、消息主题、脚本、模板和缓存。
  4. 保存并启用目标,用测试 MQTT 客户端连接后再打开“目标调试”。

目标基本信息

参数默认值如何配置
所属转发组-必须选择已保存的转发组。
目标名称-必填,同组唯一。
启用开启关闭时不会监听端口。
日志级别Info排查监听、认证或发布问题时临时使用 Debug
启动超时60页面可填 13600 秒。

目标属性

监听与安全

参数默认值如何配置
连接类型TcpTcp 监听 MQTT TCP;WebSocket 通过 HTTP 服务监听 WebSocket。
端口1883TCP 明文常用 1883,TLS 或 WebSocket 端口按部署填写。
WebSocket路径/mqtt仅 WebSocket 生效,必须以 / 开头。
启用SSL关闭开启后 Listener 使用 TLS。必须选择服务器证书。
服务器证书名称从“证书管理”选择带私钥的服务端证书;TLS 开启且证书不存在会启动失败。
CA名称双向 TLS 时选择用于验证客户端证书的 CA。
允许不受信任证书关闭仅临时自签名证书测试;生产环境保持关闭。
SSL协议版本None(系统默认)按客户端兼容性或安全策略选择 TLS 版本。
检查证书吊销关闭按安全策略开启。
允许连接ID前缀非空时只接受 Client ID 以该文本开头的客户端;空值允许所有 ID。
用户名非空时要求客户端用户名完全匹配。
密码与用户名配套,认证失败的客户端会被拒绝。

消息与 RPC

参数默认值如何配置
QoS等级0服务端发布消息使用的 QoS。
保留消息关闭开启后发布 Retained Message;停用时在 Broker 客户端清理旧保留消息。
RPC写入TopicRpcWrite填主题前缀,不含 +/#;服务端订阅 {前缀}/+,响应为 {前缀}/{请求编号}/Response
历史读取RPC TopicRpcHistory填不含通配符的主题前缀;请求和分块响应使用请求编号。
数据请求Topic收到消息后发布变量、设备和报警快照;不需要时留空。
设备Topic模板留空不发布设备模型;可使用 ${Name} 等字段。
变量Topic模板ThingsGateway/Variable可使用 ${DeviceName}${Name} 等字段。
报警Topic模板留空不发布报警模型。
插件事件Topic模板留空不发布插件事件模型。
RPC脚本选择 MQTT 动态 RPC 脚本处理请求和响应;无需自定义处理时留空。

目标变量属性

参数默认值说明
允许RPC写入开启允许外部 MQTT 客户端通过当前目标写入该变量。监控点应关闭。

变量必须已在转发组范围内;新增目标变量属性不会把变量加入转发组。

该插件还继承通用 数据1数据10 预留文本字段,默认为空,不会自动进入消息;需要发送时在脚本或模板中显式引用。

数据与脚本

继承属性包括“详细日志”“JSON缩进格式化”“JSON忽略Null”、设备/变量/报警/插件事件列表和字典上传、四类实体脚本,以及“上传模板配置”。这些开关的配置方式见MQTT 客户端转发;服务端与客户端使用相同的消息实体和 ${字段名} 占位符。

上传模板字段

在“上传模板配置”中选择 Text 或 JSON 模式并插入 ${字段名},保存前先执行预览。

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

缓存与容量

参数默认值如何配置
启用失败重试缓存开启发送失败时保留待发数据,恢复后自动补发。
缓存文件最大行数262144CacheDB 出站上限,超过后删除最旧数据。
上传分片大小2000每次补发的最大记录数。
内存队列上限100000内存缓冲上限,持续超限仍可能丢弃旧数据。
过滤离线数据关闭开启后过滤离线变量,转发组在线过滤也会生效。
并发上传数量1服务端共享连接向多个客户端发布,先保持 1,确认负载后再调整。

目标调试

进入“开发配置 → 数据转发”,选择 MQTT 服务端目标,打开“调试 → 协议调试 · MqttServer”。

功能作用
服务端状态查看监听状态、已连接客户端、订阅和消息活动。
发布消息填写测试 Topic 和正文,验证服务端发布。
客户端管理查看或断开指定客户端连接。

服务端调试

MQTT 服务端转发专用调试面板

发布消息

MQTT 服务端转发发布测试消息

状态监控

MQTT 服务端转发状态监控

断开客户端会立即中断其连接,执行前必须确认客户端身份和影响范围。

验证方法

  1. 启用目标,确认 Listener 已启动。
  2. 使用允许的 Client ID 和凭据连接测试 MQTT 客户端。
  3. 订阅变量 Topic,让一个转发范围内的测试变量产生新值。
  4. 核对 Topic、正文、QoS、Retain 和消息条数。
  5. 需要 RPC 时,再单独核对请求 Topic、响应 Topic 和变量权限。

常见问题

现象检查方法
客户端无法连接端口、连接类型、防火墙、TLS 证书、凭据和 Client ID 前缀。
订阅端没有消息转发组范围、目标状态、Topic 模板、QoS、客户端订阅和目标日志。
出现意外保留消息关闭“保留消息”,并清理旧保留消息。
RPC 写入失败RPC Topic、目标变量权限、请求正文、响应 Topic 和源变量写权限。
模板正文无效模板预览、占位符、JSON 语法和 ${字段名} 对应实体。

相关操作

  • 数据转发:配置转发组、触发、缓存和公共目标操作。
  • 证书管理:维护 MQTT 服务端证书和 CA。
  • 插件索引:查找其它采集或数据转发插件。