在使用云消息队列 MQTT 版前,需理解该产品和MQTT协议所涉及的基本概念和术语。
基本概念
实例(Instance)
创建购买云消息队列 MQTT 版服务的实体单元,每个云消息队列 MQTT 版实例都对应一个全局唯一的服务接入点URL。使用云消息队列 MQTT 版前都需要在对应的地域( Region)创建一个实例,并使用对应的接入点来访问服务。创建云消息队列 MQTT 版实例的步骤,请参见创建资源。
Message ID
消息的全局唯一标识,由云消息队列 MQTT 版系统自动生成,唯一标识某条消息。Message ID可用于回溯消息轨迹,排查问题。更多信息,请参见轨迹查询。
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下的子类。使用时无需在控制台创建,直接在代码中设置即可。命名格式为:父级Topic和各子级Topic间均使用正斜线(/)隔开,<父级Topic名称>/<二级Topic名称>/<三级Topic名称>,例如,SendMessage/demo/producer。需要注意的是云消息队列 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的具体步骤请参见创建资源。
Device ID
每个设备独一无二的标识,由业务方自行指定。需要保证全局唯一,例如每个传感器设备的序列号。
网络类
ServerUrl
云消息队列 MQTT 版推荐移动终端使用公网接入点,也支持内网接入点。目前云消息队列 MQTT 版的接入除了支持标准协议的1883端口,同时还支持加密SSL、WebSocket等方式。接入点URL是在创建实例之后自动分配,请妥善保管。如何创建实例的步骤请参见创建资源。
协议相关
MQTT
一种面向物联网和移动互联网领域的行业标准协议,适合移动终端之间的数据传输。云消息队列 MQTT 版默认支持该协议。
QoS
QoS(Quality of Service)指消息传输的服务质量。分别可在消息发送端和消息消费端设置。
发送端的QoS设置:影响发送端发送消息到云消息队列 MQTT 版的传输质量。
消费端的QoS设置:影响云消息队列 MQTT 版服务端投递消息到消费端的传输质量。
QoS包括以下级别:
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的组合关系所示。
表 1. QoS和cleanSession的组合关系
QoS级别 | cleanSession=true | cleanSession=false |
QoS0 | 无离线消息,在线消息只尝试推一次。 | 有离线消息,在线消息只尝试推一次。 |
QoS1 | 无离线消息,在线消息保证可达。 | 有离线消息,所有消息保证可达。 |
QoS2 | 无离线消息,在线消息保证可达且只接收一次。 | 暂不支持。 |
解决方案相关
RTC
实时通信,一种主要面向语音、视频领域的网络通信方式。目前比较主流的应用场景包括语音通话、视频通话、视频会议等。
RTC服务器
阿里云音视频通信RTC提供的音视频相关媒体通道服务。
音视频业务管控服务器
音视频通信系统中的管控节点,简称音视频管控服务。音视频管控服务需要由业务方自行建设,用于控制所有音视频通信会话的生命周期。该管控节点一般部署在云端,使用阿里云的基础产品搭建。
音视频移动端应用
音视频通信系统中最终用户持有的终端App,简称终端App。终端用户使用该App发起或者参与音视频通话。
智能AP
市面常见的智能路由器等网络设备,支持应用编程,可以同时承担互联网接入以及局域网设备控制等工作。
电子价签
实际分布在商场、超市等场所中的电子显示屏幕,一般使用蓝牙、ZigBee等无线传感网络协议和智能AP节点组网。
电子价签管控服务
电子价签系统中用于管理电子屏幕显示内容的后台服务,主要承担改价等人工操作的任务管理和查询工作。
RDS
阿里云推出的一种稳定可靠、可弹性伸缩的在线数据库服务。在电子价签系统中用来持久化改价等任务的状态变更。
SLS日志存储
阿里云推出的日志存储服务,在电子价签系统中用来持久化保存所有操作日志,用于审计和溯源。