开发者社区 > 云原生 > 消息队列 > 正文

想请教下,mqtt qos为0 会保证消息的有序性吗?

想请教下,mqtt qos为0 会保证消息的有序性吗?发现有一些数据在订阅端是乱序到达的

展开
收起
cuicuicuic 2023-12-25 09:46:02 96 0
3 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在MQTT协议中,QoS(Quality of Service)等级是核心的消息可靠性保障手段,分为0(最多一次)、1(至少一次)和2(正好一次)三个级别。QoS 0是最高效的传输模式,但也是消息送达最无法保证的级别。在这种模式下,发布者只会发布一次消息,接收者不会应答消息,发布者也不会储存和重发消息。因此,当网络连接不稳定或者出现问题时,消息可能会丢失。

    为了保证消息至少被送达一次,可以使用QoS 1模式。在这个模式下,MQTT通过简单的ACK机制来保证消息至少被送达一次。发布者会发布消息,并等待接收者的PUBACK报文的应答,如果在规定的时间内没有收到PUBACK的应答,发布者会将消息的DUP置为1并进行重发。

    至于乱序问题,MQTT协议本身并未提供严格的有序性保证。如果需要确保消息的有序性,可能需要在应用层进行额外的设计和处理。

    2023-12-26 14:34:18
    赞同 展开评论 打赏
  • mqtt无论qos是多少都不保证消息有序性哈 ,此回答整理自钉群“阿里云 微消息队列 MQTT产品咨询群”

    2023-12-25 17:10:33
    赞同 展开评论 打赏
  • MQTT的QoS级别0不保证消息的有序性。即使在同一个Topic下,由于QoS 0的消息可能会丢失或重复,所以数据在订阅端可能会乱序到达。如果你需要保证消息的有序性,建议使用QoS级别1或2,并确保每个消息都有唯一的标识符以便在接收端进行排序。

    2023-12-25 16:32:36
    赞同 展开评论 打赏
问答标签:
相关产品:

多个子产品线联合打造金融级高可用消息服务以及对物联网的原生支持,覆盖多行业。

相关产品

  • 云消息队列 MQ
  • 相关电子书

    更多
    RocketMQ Client-GO 介绍 立即下载
    RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载
    基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载