mqtt学习

MQTT

device1 --sub-- /login 接受信息 --{“user”:“admin”}

broker —代理 — server-ip (消息转发/异步/削峰填谷)

device2 —publish-- /login {“user”:“admin”} --qos 服务质量 0 1 2

设备通过连接broker来互相通信.

背景说明

笔者是个java菜鸡,目前工作中接触了物联网方面也就是 IOT

自然也接触到了MQTT,我想记录记录也介绍下 MQTT

1.What is MQTT? 😲

MQTT 是一种轻量级的通讯协议,如 HTTP 类似用来发送和接受信息的,是专为资源受限的设备和低带宽、高延迟或不可靠的网络而设计.符合物联网设备的需求,因为可能有些时候设备比较边缘网络比较差等等原因,

这些物联网设备使用 MQTT 进行数据传输,因为它易于实施,并且可以有效地传输物联网数据。MQTT 支持设备到云端和云端到设备之间的消息传递。

2.How to Communicate ?

MQTT是一种类似消息队列的 发布–订阅模式 , Client 间的通信就靠 Topic 主题的订阅和推送进行.

MQTT不同于 MQTT 是有个 Broker–代理, MQTT 代理是协调不同客户端之间消息的后端系统。代理的职责包括接收和筛选消息、识别订阅每条消息的客户端,以及向他们发送消息。它还负责其他任务,例如:

  • 授权 MQTT 客户端以及对其进行身份验证
  • 将消息传递给其他系统以进行进一步分析
  • 处理错过的消息和客户端会话

MQTT 原理: 客户端和代理开始使用 MQTT 连接进行通信。客户端通过向 MQTT 代理发送 CONNECT 消息来启动连接。代理通过响应 CONNACK 消息来确认已建立连接。MQTT 客户端和代理都需要 TCP/IP 堆栈进行通信。客户端从不相互联系,它们只与代理联系

例如下面: 一个客户端发布一个订阅, 每个客户端都可以发布和订阅 ,中间是需要靠 broker 转发订阅的消息的

img

MQTT publish

MQTT 客户端以字节格式发布包含主题和数据的消息。客户端确定数据格式,例如文本数据、二进制数据、XML 或 JSON 文件。例如,智能家居系统中的灯可能会针对主题 livingroom/light 发布消息 on

MQTT subscribe

MQTT 客户端向 MQTT 代理发送 SUBSCRIBE 消息,以接收有关感兴趣主题的消息。此消息包含唯一标识符和订阅列表。例如,您手机上的智能家居应用程序想要显示您家中有多少灯亮着。它将订阅主题 light 并增加所有 on 消息的计数器。

*** MQTT 通过 Qos 来决定推送消息的模式**

  • QoS 0,最多交付一次。

  • QoS 1,至少交付一次。

  • QoS 2,只交付一次。

其中,使用 QoS 0 可能丢失消息,使用 QoS 1 可以保证收到消息,但消息可能重复,使用 QoS 2 可以保证消息既不丢失也不重复。QoS 等级从低到高,不仅意味着消息可靠性的提升,也意味着传输复杂程度的提升。

**在一个完整的从发布者到订阅者的消息投递流程中,QoS 等级是由发布者在 PUBLISH 报文中指定的,大部分情况下 Broker 向订阅者转发消息时都会维持原始的 QoS 不变。不过也有一些例外的情况,根据订阅者的订阅要求,消息的 QoS 等级可能会在转发的时候发生降级。 **

MQTT 的文件传输

是一种基于 TCP 的物联网通信协议,其 Payload 可以容纳任意类型的数据,例如文本、二进制、JSON、XML 等多种格式。这种灵活性使得 MQTT 在物联网应用中拥有广泛的适用性,能够满足不同场景下多样化数据传输的需求。

文件传输客户端开发 | EMQX 企业版文档

🔚 暂时理解这么些,其余后面再补充 Thanks~

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2023-2025 IceBlin
  • Visitors: | Views:

thanks,but no~~

支付宝
微信
//引入