文档

请求与响应模式

更新时间:
一键部署

本文介绍云消息队列 MQTT 版支持的MQTT 5.0新特性的请求与响应模式。

功能介绍

MQTT 5.0 引入了请求与响应模式,这是一种允许客户端在发送PUBLISH消息时请求一个响应的通信机制。请求/响应模式在MQTT协议中是通过两个新的属性实现的:响应主题(Response Topic)和关联数据(Correlation Data)。

它们可以用于将响应消息关联到特定的请求消息,从而简化了双向通信的实现。

应用场景

  • 远程命令和控制:当设备需要执行一个操作并报告结果时,例如远程控制智能家居设备开关灯泡。

  • 请求/响应交互:此模式可用于服务请求和应答,例如,客户端请求最新的天气信息,并从服务端接收到响应。

  • RPC(Remote Procedure Call):实现对后端服务的远程调用,并等待处理的结果。

  • 数据查询:客户端可以请求特定的数据集,并希望得到相应的数据响应,例如请求数据库查询结果。

消息示例

让我们以一个IoT设备需要查询当前的设备配置为例。客户端应该将预期接收响应的主题和可选的关联数据包含在PUBLISH消息中。

// 客户端请求配置
PUBLISH
Topic: requests/device1/getConfig
Response Topic: responses/device1/getConfig
Correlation Data: { "requestId": "abcdef12345" }
Payload: {} // 空负载,表示获取配置
  
// 接收到的配置响应
PUBLISH
Topic: responses/device1/getConfig
Correlation Data: { "requestId": "abcdef12345" }
Payload: { ...configuration data... }

在这个示例中:

  • 客户端向主题requests/device1/getConfig发布一个请求消息。

  • 响应主题responses/device1/getConfig代表响应将在该主题下发布。

  • 关联数据{"requestId": "abcdef12345"}用于将响应与请求进行匹配。

设备收到请求后,将配置信息发布至响应主题,并在消息中包含相同的关联数据,以便客户端可以将响应与原请求相关联。

这种请求与响应模式使MQTT不仅可以用于简单的发布/订阅场景,也能够实现更复杂的交互模式,例如可以应用于客户端-服务器架构。