`
rensanning
  • 浏览: 3548588 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:38145
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:607306
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:682329
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:89350
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:401851
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69693
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:91710
社区版块
存档分类
最新评论

MQTT入门(7)- 服务质量QoS

 
阅读更多
为了确保客户端和服务器端之间消息的送达,MQTT支持三种消息发布服务质量(QoS:Quality of Service):

(1)QoS 0(At most once)“至多一次”
消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。

(2)QoS 1(At least once)“至少一次”
确保消息到达,但消息重复可能会发生。

(3)QoS 2(Exactly once)“只有一次”
确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。

需要注意的是:
  • 这里指的是Client和Broker之间的关系,而不是Publisher和Subscriber之间的关系,在Pub/Sub模型中,Publisher和Subscriber是完全解耦的。
  • 发布者在每次发布消息时都需要设置QoS,订阅者在订阅主题时也可以设置QoS。
  • 发布者或者订阅者设置的QoS分别是和服务器端异步执行的。
  • 即使发布者设置发布消息为QoS2,订阅者也可以通过QoS0或QoS1来订阅该消息(这样就是QoS的降级downgrade)。
  • 订阅者一般来说最好使用QoS2。

以下是发布和订阅的时序图:









通信抓包具体看看每种QoS的通信过程。


Publisher(Qos=0)Subscriber(Qos=0)


Publisher(Qos=1)Subscriber(Qos=1)


Publisher(Qos=2)Subscriber(Qos=2)


Publisher(Qos=2)Subscriber(Qos=0)


Publisher(Qos=0)Subscriber(Qos=2)

  • 大小: 3.2 KB
  • 大小: 5.8 KB
  • 大小: 7 KB
  • 大小: 4.9 KB
  • 大小: 1.4 KB
  • 大小: 152.8 KB
  • 大小: 173.5 KB
  • 大小: 206.9 KB
  • 大小: 175.5 KB
  • 大小: 146.5 KB
1
0
分享到:
评论

相关推荐

    MQTT入门(10)- MQTT与WebSocket

    **MQTT入门(10)- MQTT与WebSocket** 在物联网(IoT)领域,消息传输协议(MQTT)和WebSocket是两种广泛使用的通信协议。它们各自具有独特的优势,适用于不同的应用场景。本文将深入探讨这两者的基本概念、工作原理...

    MQTT 入门介绍.docx

    ### MQTT入门介绍知识点详解 #### 一、MQTT概述 **MQTT**(Message Queuing Telemetry Transport)是一种轻量级的、基于客户端-服务器的消息发布/订阅传输协议,由IBM在1999年首次发布。它专为远程设备提供实时可靠...

    MQTT入门教材

    - **服务质量(QoS)**:MQTT提供了三种服务质量等级: - **QoS 0(最多一次)**:消息发送一次,不会重复发送,也不保证消息一定能到达接收端。 - **QoS 1(至少一次)**:消息至少会被发送一次,可能会重复发送...

    MQTT入门资料(用于了解什么是MQTT)

    3. **可靠性**:MQTT协议支持多种服务质量级别(QoS),可以根据不同的应用需求调整数据传输的质量,确保关键信息的可靠传递。 4. **可扩展性**:MQTT协议支持海量设备的接入,并能够灵活地处理大量并发连接。 5. **...

    Mqtt Demo 开发学习之必备-新手1天入门

    6. **质量 of Service (QoS)**:MQTT定义了三种服务质量等级,QoS 0(最多一次)、QoS 1(至少一次)和QoS 2(恰好一次)。QoS 0适用于不重要的消息,QoS 1适合大多数情况,而QoS 2则保证消息不会丢失或重复,但可能...

    MQTT协议中文版 pdf 文档下载

    3. **服务质量(QoS)**:MQTT提供了三种服务质量等级,分别是QoS 0(至多一次)、QoS 1(至少一次)和QoS 2(只有一次)。这些级别确保了消息的可靠传递,QoS 0适用于不需确认的快速消息,而QoS 2则保证消息无重复...

    mqttClient最新的源码

    5. **服务质量(QoS)**:MQTT定义了三种QoS级别,即0、1和2,分别对应最佳努力、至少一次和恰好一次的传递保证。你可以根据应用需求选择合适的QoS。 6. **离线消息**:当客户端离线时,Broker可以保存其未送达的...

    MQTT 开发手册大全

    书中还涉及到MQTT消息的基本概念,包括消息的QoS(服务质量)等级、会话和消息的持久化处理等。这些信息对于开发者来说非常重要,因为它们决定了消息传输的可靠性和效率。在客户端编程方面,书中对于如何使用MQTT...

    物联网通信快速入门产品文档.pdf

    - **QoS级别**: 提供三种服务质量级别(QoS),分别是0(最多一次)、1(至少一次)、2(正好一次),用于满足不同场景的需求。 - **保留消息**: 服务器可以存储最后一次发布的消息,并在新客户端订阅该主题时推送...

    Mqtt_Protocol_Test.rar_mqtt_云平台_用于ESP8266连接云平台

    5. **QoS(Quality of Service)级别**:MQTT支持三种服务质量级别:QoS 0(至多一次)、QoS 1(至少一次)和QoS 2(恰好一次)。QoS 0适合对可靠性要求不高的场景,消息可能丢失;QoS 1确保消息至少送达一次,但...

Global site tag (gtag.js) - Google Analytics