本文介绍物联网平台支持的MQTT 5.0新特性的请求与响应模式。
背景信息
MQTT协议采用发布与订阅模式,通过异步消息传输,实现发布者和订阅者完全解耦。在物联网设备的实际业务场景下,可使用请求与响应模式,解决需要回复的场景需求。例如服务端控制设备开关、设备请求服务端数据等场景。
功能说明
MQTT 5.0实现请求与响应模式,并不与HTTP协议一样使用同步方式,而是在发布与订阅基础上,通过在消息中添加响应主题和关联数据,实现请求与响应的关联,使用异步消息方式简化响应端的开发。
响应主题(ResponseTopic):字符串,保存响应端发布返回消息的Topic。
关联数据(CorrelationData):二进制数据,保存本次请求的上下文数据。
请求与响应模式通信流程图如下:
重要
当同时存在多次请求时,可以在关联数据中添加请求ID,确定对应请求的响应。
设备的远程实时控制也可以使用物联网平台提供的RRPC能力,以实现结果同步返回。
发布QoS 1消息只保证消息到物联网平台,为保证订阅端正确接收并完成处理,建议使用请求与响应模式。
应用场景
设备端请求服务端数据
在物联网设备的某些场景下,设备需要向服务端请求数据。例如:智能炒菜机,需要向云端请求获取各种菜谱,每种菜谱对应不同的主题(Topic),使用请求与响应模式,服务端只需要回复菜谱内容,不需要关注相应的Topic,简化了业务服务端的开发。
设备端:类似远程调用,可以通过关联数据进行请求与回复的关联。
业务服务端:无需关注回复消息的响应Topic,只需要处理业务返回结果。
服务端远程控制设备
在服务端远程控制设备的场景,例如:远程向电子锁发送开门的命令,需要立即有返回。此场景可以使用请求与响应模式,并可在关联数据中加上鉴权数据,实现终端鉴权。