请求与响应模式

本文介绍物联网平台支持的MQTT 5.0新特性的请求与响应模式。

背景信息

MQTT协议采用发布与订阅模式,通过异步消息传输,实现发布者和订阅者完全解耦。在物联网设备的实际业务场景下,可使用请求与响应模式,解决需要回复的场景需求。例如服务端控制设备开关、设备请求服务端数据等场景。

功能说明

MQTT 5.0实现请求与响应模式,并不与HTTP协议一样使用同步方式,而是在发布与订阅基础上,通过在消息中添加响应主题和关联数据,实现请求与响应的关联,使用异步消息方式简化响应端的开发。

  • 响应主题(ResponseTopic)字符串,保存响应端发布返回消息的Topic。

  • 关联数据(CorrelationData)二进制数据,保存本次请求的上下文数据。

请求与响应模式通信流程图如下:

image..png

重要
  • 当同时存在多次请求时,可以在关联数据中添加请求ID,确定对应请求的响应。

  • 设备的远程实时控制也可以使用物联网平台提供的RRPC能力,以实现结果同步返回。

  • 发布QoS 1消息只保证消息到物联网平台,为保证订阅端正确接收并完成处理,建议使用请求与响应模式。

应用场景

设备端请求服务端数据

在物联网设备的某些场景下,设备需要向服务端请求数据。例如:智能炒菜机,需要向云端请求获取各种菜谱,每种菜谱对应不同的主题(Topic),使用请求与响应模式,服务端只需要回复菜谱内容,不需要关注相应的Topic,简化了业务服务端的开发。

  • 设备端:类似远程调用,可以通过关联数据进行请求与回复的关联。

  • 业务服务端:无需关注回复消息的响应Topic,只需要处理业务返回结果。

image..png

服务端远程控制设备

在服务端远程控制设备的场景,例如:远程向电子锁发送开门的命令,需要立即有返回。此场景可以使用请求与响应模式,并可在关联数据中加上鉴权数据,实现终端鉴权。

image..png