网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

MQTT的基本特性

更新时间:2026年03月27日   作者:spoto   标签(Tag):
先决条件:消息队列遥测传输协议(MQTT)服务质量(QoS)级别:服务质量是指客户与中介之间所达成的一种协议水平。这一水平有助于确保客户的信息传输的可靠性。 共有三个服务质量等级:
  • QoS等级为0:最多一次。当消息以QoS级别为0的方式被发布时,该消息最多只会被传递一次。 换句话说,无法保证该消息一定会被传递出去。 如果真的能够交付的话,那么最多只会交付一次而已。 在这个QoS级别下,发送方只发布一次消息,之后便不再处理该消息。 在这种情况下,无需等待任何认可或回应。 因此,如果网络出现故障,那么消息可能无法被传递出去。 如果网络稳定,那么消息将会被传递出去,不过只会传递一次而已。图/图片 –QoS等级为0何时使用“?”。
    • 在开发那些能够容忍少量消息丢失的应用程序时,需要考虑到这一点。
    • 在开发应用程序时,需要确保底层网络具有可靠性,这样,那些只发布一次的消息才能被成功传递。
    在上面的图中,Broker只是从发布者客户端接收单一的PUBLISH消息而已。
  • QoS 1:至少一次。当消息以QoS级别1进行发送时,该消息至少会被传递一次。在这一QoS级别下,发送方会先发送消息,然后将其存储起来,直到收到接收方的确认消息为止。一旦收到确认消息,发送方就会丢弃该消息。如果未能及时收到确认消息,那么该消息将会被重新发送。因此,在这一QoS级别下,消息可以被成功传递一次,甚至多次,以确保其能够顺利送达。图 –QoS等级1何时使用“?”
    • 在开发那些无法承受消息丢失的应用程序时,就需要采取相应的措施了。
    • 在开发能够处理重复消息传递的应用程序时。
    • 在开发那些不希望增加通信成本的应用程序时,这种情况尤为常见。
    • 在开发那些基于不可靠网络环境的应用程序时,必须在协议层面采取相应的可靠性保障措施。
    在上图中,经纪人接收到PUBLISH消息后,会向发布者客户端发送PUBACK响应。
  • QoS 2:一次仅执行一次——当客户端以QoS级别为2的方式发布消息时,该消息将会被准确传递一次。 在这个QoS级别下,发送方会发布消息,将其存储起来,然后等待PUBREC的到来。 在收到消息后,接收方会将PUBREC发送给发送方。 PUBREC表示消息已成功传递给接收方。 因此,在收到 PUBREC 之后,该消息会被发送者丢弃。 然后,它将PUBREL发送给接收方。 在接收到PUBREL之后,接收方会丢弃已保存的状态信息,然后发送PUBCOMP。 当发送方收到最终的PUBCOMP后,它也会丢弃之前保存的状态信息。 因此,在QoS级别2中,用于通信的额外消息能够确保消息能够被成功传递一次。图/图片 –QoS等级2何时使用“?”
    • 在开发那些要求每条消息都必须被精确传递一次的应用程序时。
    • 在开发那些能够承受额外通信成本的应用程序时。
    • 在开发那些依赖于不可靠网络环境的应用程序时,必须在协议层面采取相应的可靠性保障措施。
    在上面的图中,Broker首先接收PUBLISH消息,然后发送PUBREC消息。接着,它又接收PUBREL消息,最后向发布者客户端发送PUBCOMP消息。
  • 发布者与订阅者のQoS等级之间的区别:发布者客户端(发送方)与代理服务器(接收方)之间的消息通信的QoS级别,将由消息被发布的级别来决定。 Broker(发送方)与订阅者客户端(接收方)之间的消息通信的QoS级别,取决于客户端订阅该主题的级别。 通信的整体QoS水平,等于中继器两侧两个QoS水平中的较小值。 这一整体水平决定了发布方客户端与接收方客户端之间消息传递的可靠性。发布者客户端的服务质量 订阅者客户端的服务质量 整个通信系统的总体服务质量
    000
    010
    020
    100
    111
    121
    200
    211
    222
              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料