OpenHarmony中使用MQTT

MQTT**(**消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议 。它工作在TCP/IP协议族上 , 是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议 , 为此 , 它需要一个消息中间件 。

OpenHarmony中使用MQTT

文章插图
一、前景摘要
  • DES版本:DevEco Studio 3.0 Release
  • SDK版本:3.2.2.5 ( API9)
  • npm版本:6.14.16
  • EMQX:linux(Ubuntu)
  • MQTTX:Version: v1.9.2
二、了解MQTT1、什么是MQTT?MQTT**(**消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议 。它工作在TCP/IP协议族上 , 是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议 , 为此 , 它需要一个消息中间件 。
2、MQTT特性MQTT协议是为大量计算能力有限 , 且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议 , 它具有以下主要的几项特性:
使用发布/订阅消息模式 , 提供一对多的消息发布 , 解除应用程序耦合;
  • 对负载内容屏蔽的消息传输 。
  • 使用 TCP/IP 提供网络连接 。
  • 有三种消息发布服务质量:QoS(定阅等级) , 分0、1、2三个等级 , 简单来说是等级越高越可靠 。
  • 小型传输 , 开销很小(固定长度的头部是 2 字节) , 协议交换最小化 , 以降低网络流量 。
  • 使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制 。
3、应用场景(多客户端 , 少量消息)
  • 车联网
  • 工业互联网
  • 智能家居
  • 视频直播弹幕
  • IM实时聊天(一对一聊天 , 群组聊天)
  • 推送服务 , 比如推送实时新闻
  • 金融交易数据订阅推送
4、基本名词MQTT协议中的三种身份
  • MQTT Broker:代理服务器
  • Publish:发布者 , 发布消息
  • Subscribe:订阅者 , 订阅消息
MQTT传输的消息主题(Topic) , 负载(payload)和QoS
  • Topic:消息的类型 , 订阅者订阅后就会收到该主题的消息内容(payload).
  • Payload:消息的内容 , 指订阅者具体要使用的内容 。
  • QoS:服务质量.
“至多一次”(QoS0):消息发布完全依赖底层 TCP/IP 网络 。会发生消息丢失或重复 。这一级别可用于如下情况 , 环境传感器数据 , 丢失一次读记录无所谓 , 因为不久后还会有第二次发送 。即是推送之后就完事了 , 至于对方有没有收到 , 收到是什么 , 数据有没有丢失 , 都不管 。
“至少一次”(QoS1):确保消息到达 , 但消息重复可能会发生 。即是你收到推送后 , 你还得返回一个puback给对方 , 告诉对方收到了 , 不然对方会以为你没收到 , 隔一段时间后重新给你推送 , 直到你给对方返回一个Puback为止 。
“只有一次”(QoS2):确保消息到达一次 。这一级别可用于如下情况 , 在计费系统中 , 消息重复或丢失会导致不正确的结果 。
异常中断的机制使用 Last Will 和 Testament 特性通知有关各方客户端 。
  • Last Will:即遗言机制 , 用于通知同一主题下的其他设备发送遗言的设备已经断开了连接 。
  • Testament:遗言机制 , 功能类似于Last Will 。
三、MQTT的简单使用1、搭建MQTT服务器EMQXMQTT服务器有很多种 , 且部署方式也不一样 。


推荐阅读