在使用云消息队列 MQTT 版前,需理解该产品和MQTT协议所涉及的基本概念和术语。
基本概念
- 实例(Instance)
创建购买云消息队列 MQTT 版服务的实体单元,每个云消息队列 MQTT 版实例都对应一个全局唯一的服务接入点URL。使用云消息队列 MQTT 版前都需要在对应的地域( Region)创建一个实例,并使用对应的接入点来访问服务。创建云消息队列 MQTT 版实例的步骤,请参见MQTT快速入门。
- MQTT服务器
- 云消息队列 MQTT 版提供的MQTT协议交互的服务端节点,用于完成与MQTT客户端和云消息队列 RocketMQ 版各自的消息收发。
- MQTT客户端
- 用于和MQTT服务器交互的移动端节点,全称为云消息队列 MQTT 版客户端。
- P2P消息
- 云消息队列 MQTT 版在标准的MQTT协议基础上提供的一种特殊消息,该类型消息无需普通的订阅关系匹配,便可直接发送给指定的单个目标MQTT客户端。更多信息,请参见P2P消息收发模式(MQTT)。
- 父级Topic(Parent Topic)
- MQTT协议基于Pub/Sub模型,因此任何消息都属于一个Topic。根据MQTT协议,Topic存在多级,定义第一级Topic为父级Topic,使用云消息队列 MQTT 版前,需先在控制台创建该父级Topic,可以在云消息队列 MQTT 版控制台创建,或者直接在云消息队列 RocketMQ 版的控制台创建。
- 子级Topic(Subtopic)
- MQTT的二级Topic,甚至三级Topic都是父级Topic下的子类。使用时,直接在代码里设置,无需创建。需要注意的是云消息队列 MQTT 版限制父级Topic和子级Topic的总长度为64个字符,如果超出长度限制将会导致客户端异常。
- Client ID
云消息队列 MQTT 版的Client ID是每个客户端的唯一标识,要求全局唯一,使用相同的Client ID连接云消息队列 MQTT 版服务会被拒绝。
Client ID由两部分组成,组织形式为<GroupID>@@@<DeviceID>。Client ID的长度限制为64个字符,不允许使用不可见字符,更多限制信息,请参见使用限制。
- Group ID
- 用于指定一组逻辑功能完全一致的节点共用的组名,代表一类相同功能的设备。Group ID需要在云消息队列 MQTT 版的控制台创建,创建后方可使用。如何创建Group ID的具体步骤请参见MQTT快速入门。
- Device ID
- 每个设备独一无二的标识,由业务方自己指定。需要保证全局唯一,例如每个传感器设备的序列号。
网络类
- ServerUrl
云消息队列 MQTT 版推荐移动终端使用公网接入点,也支持内网接入点。目前云消息队列 MQTT 版的接入除了支持标准协议的1883端口,同时还支持加密SSL和WebSocket等方式。接入点URL是在创建实例之后自动分配,请妥善保管。如何创建实例的步骤,请参见MQTT快速入门。
协议相关
- MQTT
- 一种物联网和移动互联网领域的行业标准协议,适合移动终端之间的数据传输。云消息队列 MQTT 版默认支持该协议。
- QoS
- QoS(Quality of Service)指代消息传输的服务质量。它包括以下级别:
- QoS0代表最多分发一次
- QoS1代表至少达到一次
- QoS2代表仅分发一次
- cleanSession
- cleanSession标志是MQTT协议中对一个客户端建立TCP连接后是否关心之前状态的定义。具体语义如下:
- cleanSession=true:客户端再次上线时,将不再关心之前所有的订阅关系以及离线消息。
- cleanSession=false:客户端再次上线时,还需要处理之前的离线消息,而之前的订阅关系也会持续生效。
QoS和cleanSession搭配使用时需注意以下几点:
- MQTT要求每个客户端每次连接时的cleanSession标志必须固定,不允许动态变化,否则会导致离线消息的判断有误。
- MQTT目前对外QoS2消息不支持非cleanSession,如果客户端以QoS2方式订阅消息,即使设置cleanSession=false也不会生效。
- P2P消息的cleanSession判断以发送方客户端的配置为准。
QoS和cleanSession的不同组合产生的结果如QoS和cleanSession的组合关系所示。
QoS级别 | cleanSession=true | cleanSession=false |
---|---|---|
QoS0 | 无离线消息,在线消息只尝试推一次 | 无离线消息,在线消息只尝试推一次 |
QoS1 | 无离线消息,在线消息保证可达 | 有离线消息,所有消息保证可达 |
QoS2 | 无离线消息,在线消息保证只推一次 | 暂不支持 |
解决方案相关
- RTC
- 实时通信,一种主要面向语音、视频领域的网络通信方式。目前比较主流的应用场景是语音通话、视频通话、视频会议等。
- RTC服务器
- 阿里云音视频通信RTC提供的音视频相关媒体通道服务。
- 音视频业务管控服务器
- 音视频通信系统中的管控节点,简称音视频管控服务。音视频管控服务需要由业务方自行建设,用于控制所有音视频通信会话的生命周期。该管控节点一般部署在云端,使用阿里云的基础产品搭建。
- 音视频移动端应用
- 音视频通信系统中最终用户持有的终端App,简称终端App。终端用户使用该App发起或者参与音视频通话。
- 智能AP
- 市面常见的智能路由器等网络设备,支持应用编程,可以同时承担互联网接入以及局域网设备控制等工作。
- 电子价签
- 实际分布在商场超市等场所中的电子显示屏幕,一般使用蓝牙、ZigBee等无线传感网络协议和智能AP节点组网。
- 电子价签管控服务
- 电子价签系统中用于管理电子屏幕显示内容的后台服务,主要承担改价等人工操作的任务管理和查询工作。
- RDS
- 阿里云推出的一种稳定可靠、可弹性伸缩的在线数据库服务。在电子价签系统中用来持久化改价等任务的状态变更。
- SLS日志存储
- 阿里云推出的日志存储服务,在电子价签系统中用来持久化保存所有操作日志,用于审计和溯源。