背景介绍
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 代理回复的功能,实现统一的机制和方案。
实现原理
对于 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 毫秒数 |