相关说明

  1. 注意:微消息队列MQTT 设备通过MQTT接入阿里云IOT平台是两种概念
  2. 微消息队列MQTT
  3. 仅是换一种普通的消息队列换成一种更适合硬件设备的消息队列
  4. https://help.aliyun.com/document_detail/42419.html?spm=a2c4g.11186623.6.552.605c70552NxT6n
  5. 阿里云物联网平台:
  6. 1:消息队列变为更适合硬件设备的消息队列(更合适的交互方式)
  7. 2:设备的重要信息(三元组 上下线情况) 同时存放于该平台
  8. https://help.aliyun.com/product/30520.html?spm=a2c4g.750001.list.241.b2b97b13fn83At

1:什么是微消息队列MQTT版

  1. 最大的特点:弱网通讯
  2. 微消息队列MQTT版是阿里云推出的一款面向移动互联网以及物联网领域的轻量级消息中间件。
  3. 如果说传统的消息队列中间件一般应用于微服务之间,
  4. 那么适用于物联网的微消息队列MQTT版则实现了端与云之间的消息传递和真正意义上的万物互联。

2:核心概念

  1. Topic:消息主题,一级消息类型,生产者向其发送消息。
  2. 生产者:也称为消息发布者,负责生产并发送消息至Topic
  3. 消费者:也称为消息订阅者,负责从Topic接收并消费消息。
  4. 消息:生产者向Topic发送并最终传送给消费者的数据。
  5. 规则:微消息队列MQTT版与其他阿里云产品实现数据互通的资源。

3:消息收发模型

image.png

4:基本概念(名称解释 )

  1. 1:实例
  2. 创建购买微消息队列MQTT版服务的实体单元,
  3. 每个微消息队列MQTT版实例都对应一个全局唯一的服务接入点URL
  4. 2Message ID
  5. 消息的全局唯一标识,由微消息队列MQTT版系统自动生成,唯一标识某条消息。
  6. 3MQTT服务器
  7. 微消息队列MQTT版提供的MQTT协议交互的服务端节点,
  8. 用于完成与MQTT客户端和消息队列RocketMQ版各自的消息收发。
  9. 4MQTT客户端
  10. 用于和MQTT服务器交互的移动端节点,全称为微消息队列MQTT版客户端。
  11. 5:父级TopicParent Topic
  12. MQTT协议基于Pub/Sub模型,因此任何消息都属于一个Topic
  13. 根据MQTT协议,Topic存在多级,定义第一级Topic为父级Topic,使用微消息队列MQTT版前,需先在控制台创建该父级Topic
  14. 可以在微消息队列MQTT版控制台创建
  15. 或者直接在消息队列RocketMQ版的控制台创建。
  16. 6:子级TopicSubtopic
  17. MQTT的二级Topic,甚至三级Topic都是父级Topic下的子类。
  18. 使用时,直接在代码里设置,无需创建。
  19. 需要注意的是微消息队列MQTT版限制父级Topic和子级Topic的总长度为64个字符,
  20. 如果超出长度限制将会导致客户端异常。
  21. 7Client ID
  22. 微消息队列MQTT版的Client ID是每个客户端的唯一标识,要求全局唯一,使用相同的Client ID连接微消息队列MQTT版服务会被拒绝。
  23. Client ID由两部分组成,组织形式为<GroupID>@@@<DeviceID>。
  24. 8Group ID
  25. 用于指定一组逻辑功能完全一致的节点共用的组名,代表一类相同功能的设备。
  26. Group ID需要在微消息队列MQTT版的控制台创建。
  27. 9Device ID
  28. 每个设备独一无二的标识,由业务方自己指定。需要保证全局唯一,例如每个传感器设备的序列号。

5:协议相关(名称解释 )

  1. 1ServerUrl
  2. 微消息队列MQTT版推荐移动终端使用公网接入点,也支持内网接入点。
  3. 2MQTT
  4. 一种面向物联网和移动互联网领域的行业标准协议,适合移动终端之间的数据传输。
  5. 微消息队列MQTT版默认支持该协议
  6. 3QoSQuality of Service)指代消息传输的服务质量。
  7. QoS0代表最多分发一次
  8. QoS1代表至少达到一次
  9. QoS2代表仅分发一次
  10. 4cleanSession(对一个客户端建立TCP连接后是否关心之前状态)
  11. cleanSession=true:客户端再次上线时,将不再关心之前所有的订阅关系以及离线消息。
  12. cleanSession=false:客户端再次上线时,还需要处理之前的离线消息,而之前的订阅关系也会持续生效。
  13. 注意:如果客户端以QoS2方式订阅消息,即使设置cleanSession=false也不会生效。

6:MQTT 与 RocketMQ

  1. 微消息队列MQTT版配置了相关规则实现与消息队列RocketMQ版的数据互通,
  2. 则相关资源应处于同一地域。

  1. RocketMQ消息结构 MQTT消息结构
  2. 在微消息队列 MQTT 版中 Topic 是多级结构,而消息队列 RocketMQ 版的 Topic 仅有一级,
  3. 因此,微消息队列 MQTT 版中的一级 Topic 映射到消息队列 RocketMQ 版的 Topic
  4. 而二级和三级 Topic 则映射到消息队列 RocketMQ 版的消息属性(Properties)中。

image.png

  1. RocketMQ地域 MQTT地域关系

image.png