消息队列MQTT使用场景

物联网消息场景
随着阿里互联网和物联网产业的不断发展,设备与云端的消息互通变得尤其重要。阿里云消息队列MQTT可承担阿里端连接接入、连接管理、数据转发等工作,后端与消息队列RocketMQ连接,保障数据持久化和消息存储。

协议支持

支持MQTT标准协议,可连接各类物联网设备;基于Pub/Sub消息模型,支持一对多的消息收发方式;

队列能力

支持离线消息;同时可提供will message/retain message多种类型的消息,满足不同场景下的特性需求;

多种QoS支持

根据业务场景的变化,可选择不同质量的消息传递服务:QoS0最多分发一次,QoS1至少达到一次或QoS2仅到达一次;

连接支持

支持持久化/非持久化的连接方式,用户可根据再次上线时是否需要保留订阅关系及接收离线消息,按需选择连接方式;

安全可靠

通过对连接设备及消息发布订阅进行鉴权,保障用户数据安全。

新零售场景
于消息队列MQTT,可实现商场超市等场所的电子标签、公共场所的多媒体屏幕的显示更新管理。本文将以新零售场景下消息队列MQTT在电子价签的使用为例进行介绍。

方案架构
在电子价签解决方案中,通过消息队列MQTT和消息队列RocketMQ的结合使用,可实现电子价签数据的更新管理。
在电子价签系统中,主要包含电子显示屏、门店的智能AP节点、消息队列MQTT、消息队列RocketMQ及后台管控服务系统。各个组件的功能如下:
 
门店智能AP:转发上报各电子价签的状态数据,并接受变更指令。智能AP按照门店或者场所分布,内部使用MQTT SDK完成和各个电子价签的数据交换。
 
后端后台管理服务使用消息队列RocketMQ的SDK和消息队列RocketMQ交互,MQTT服务端和RocketMQ的服务端天然互通。
 
方案特性
高性能,可弹性伸缩
 
可支撑百万级设备的在线连接,百万级消息并发,毫秒级消息推送。
 
适用范围广,通用性好
 
基于MQTT标准协议实现,通用性好,方案只需简单适配数据内容即可快速复制到其他相似场景。
 
安全可靠
 
通过对连接设备及消息发布订阅进行鉴权,保障用户数据安全;分布式集群部署,避免单点故障。
 
数据交互
状态上报
 
1.     电子显示屏节点会采用定时轮询机制和门店智能AP节点进行数据交换,定时上报自己当前的显示状态、节点电量等信息。
 
2.     智能AP节点组织数据,并发送消息到MQTT服务器。
 
3.     MQTT服务器会将上报消息写入业务方指定的消息队列RocketMQ Topic。
 
4.     电子价签管控服务通过接收消息队列RocketMQ消息,处理分析当前系统中在线的电子屏幕节点的状态,并将数据记录到相应的后端管理控制系统。

更新显示
 
1.     后端管理控制服务系统发送修改显示内容的消息至消息队列RocketMQ,触发显示数据修改操作。
 
2.     MQTT服务端将消息推送给对应的智能AP节点。
 
3.     智能AP节点收到显示数据修改的消息,将任务暂存。
 
4.     电子屏幕节点会采用轮询机制和智能AP节点进行数据交换,感知新的屏显内容。
 
5.     目标电子价签节点改价成功后,智能AP节点回发一条应答MQTT消息,通知电子价签管控服务当前任务已完成。

注意事项
上述流程简要描述了如何使用消息队列MQTT和消息队列RocketMQ构建一个简单的电子屏幕管控系统。其中使用消息队列MQTT和消息队列RocketMQ进行消息的上下行传输时,相关的消息类型设计以及参数设计请尽可能遵循如下原则:
 
客户端ID映射
 
MQTT协议要求每个客户端都有一个全局唯一的Client ID,Client ID由Group ID和Device ID两部分组成,这两部分通过分隔符“@@@”连接,且需要保证最终的Client ID唯一且总长度不超过64个字符即可:
 
Group ID:用户需要在消息队列E-MQTT控制台申请Group ID。Group ID 按照平台供应商或者渠道粗略划分,例如不同的行业、批次分成不同的Group ID,方便问题定位。
 
Device ID:Device ID由应用生成。Device ID可以使用智能AP节点的MAC地址等唯一性信息编码。
 
Topic名称映射
 
使用消息队列E-MQTT收发消息需要了解MQTT协议订阅关系的模型。MQTT是遵循发布/订阅模型的消息协议,订阅关系和Topic符合目录树格式,Topic可分为父级Topic和子级Topic,父级Topic和子级Topic间使用“ / ”进行分隔,父级Topic长度为3~64个字符,子级Topic的长度不超过256个字符:
 
父级Topic:通常称第一级Topic为父级Topic。父级Topic需要在消息队列E-MQTT控制台申请后才可使用。
 
子级Topic:一级Topic的后续部分称为子级Topic。子级Topic无需申请,可任意指定。
 
收发消息参数设计
 
由于电子显示屏内容更改任务一般要求实时推送,建议在智能AP和E-MQTT服务端交互过程中,智能AP 做以下配置,以确保智能AP无需处理掉线期间的任务:
 
 cleanSession = true
 
 QoS = 1
 

智慧餐饮场景
随着物联网行业在各个领域的广泛应用,智能点餐已成为餐厅的标配;通过MQTT消息队列产品,消费者可在餐桌上扫码点餐,并与商家后端系统连接实现自助下单、支付。
 
方案架构
在智能餐饮解决方案中,通过消息队列MQTT可实现消费者、商家、后厨间通过智能设备+云服务的双向通信,可帮助商家快速地构建智能点餐系统。

方案特性
简单易用
通过使用消息队列MQTT可快速搭建智能点餐系统,减小了项目开发的工作量和开发成本。
 
快速实现端与云的双向通信
 
可便捷地实现多个消费者APP与后端餐桌管理系统、订单管理系统间的双向数据通信。消费者订单直接推送给后端系统,并可接收账单、菜品进度等信息。
 
可大幅提升运营效率
 
通过自助点餐系统可省去人工点餐所耗费的人力和时间成本,用户APP端下单直达后端订单管理系统,并可直接在线支付,极大地提升了用户体验和餐厅运营效率。