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

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

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

展开
收起
真的很搞笑 2023-12-25 09:46:02 339 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
    赞同 展开评论 打赏

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/

相关产品

  • 云消息队列 MQ
  • 热门讨论

    热门文章

    相关电子书

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