代理回复(Request Response )

最近更新时间:2025-11-26 16:36:02

我的收藏

背景介绍

MQTT 5.0 协议引入 Request / Response 机制, 该机制定义了 Requester、Responder 两个角色。
Requester: 发布携带 ResponseTopic、Correlation Data的 Publisher客户端;
Responder: 订阅、处理消息,并对携带ResponseTopic, Correlation Data属性的消息生成响应消息(TopicName为 ResponseTopic),发送回 MQTT Server,供Requester或其他订阅者进一步根据业务逻辑处理;
对于 MQTT v5.0 的Publisher、Subscriber, 可自行根据协议和业务情况,实现 Request Response;对于仅支持 v3.1、v3.1.1的存量设备,需要通过Request Response 代理回复的功能,实现统一的机制和方案。

实现原理

如果 Requester 使用 v3.1, v3.1.1协议,可通过 消息增强规则在服务端动态添加 Response Topic、Correlation Data 等 MQTT 5.0 定义的属性;
对于 v3.1, v3.1.1 版本 Responder,开启自动回复后,处理流程如下:

服务端在收到低版本 Responder PubAck/PubComp 后,会根据预定义模板,生成一条回复消息,携带 CorrelationData,发送到 Requester 指定的 ResponseTopic。

使用说明

1. Responder Subscriber 需使用 QoS > 0 的方式订阅。
2. Auto Response 仅对 QoS 降级后,QoS > 0 的消息自动生成、发布响应消息。
3. 默认情况下,MQTT Server 仅对Responder MQTT v3.1, v3.1.1 开启自动回复; v5.0 客户端优先自行按照协议规范实现 Request Response。
4. 自动回复消息说明:
Topic Name: 原消息 ResponseTopic 属性值
CorrelationData:原消息Correlation Data 值
消息体,JSON 格式,包含以下字段
字段名称
说明
id
存储唯一消息标识符
instanceId
实例 ID
publisherClientId
Requester 客户端标识符
subscriberClientId
Responder 客户端标识符
subscriberUsername
Responder 用户名
subscriberClientHost
Responder Client Host
topic
原消息 Topic Name
qos
投递 Responder QoS
pubProps
Publish 到 Responder 时的属性
messageReceivedAt
MQTT Server 收到 Requester Publish 报文的时间, 自 Epoch 毫秒数