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

mqtt可以支持顺序消息吗?

mqtt可以支持顺序消息吗?

展开
收起
十一0204 2023-08-09 07:57:27 176 1
2 条回答
写回答
取消 提交回答
  • 意中人就是我呀!

    不支持。此回答整理至钉群“阿里云 微消息队列 MQTT产品咨询群”。

    2023-08-09 11:27:36
    赞同 展开评论 打赏
  • 十年摸盘键,代码未曾试。 今日码示君,谁有上云事。

    MQTT(Message Queue Telemetry Transport)是一种轻量级的消息传递协议,主要用于物联网设备之间的通信。在MQTT协议中,消息的顺序不是严格保证的。

    因为MQTT协议的设计目标是高效、低延迟的通信,它采用了异步、非阻塞的通信方式,消息可以在网络中以任意顺序进行传递。在实际应用中,由于消息传递的时间和网络状况等因素的影响,消息的顺序可能会发生变化,甚至可能会丢失。

    为了解决这个问题,MQTT协议提供了消息保留(Retained Messages)和服务质量(Quality of Service,QoS)等功能。通过使用这些功能,可以确保消息的可靠传递和顺序性。

    消息保留功能可以让MQTT服务器在订阅主题时将最新的消息保留下来,当有新的订阅者加入时,可以立即推送最新的消息给新订阅者,保证消息的顺序性。

    在MQTT协议中,保证消息顺序需要依靠消息保留和QoS等功能,但是由于消息传递是异步非阻塞的,消息的顺序并不能得到完全的保证。在设计MQTT应用时,需要根据实际情况选择合适的QoS等级,并结合实际业务需求进行消息的保留和处理,以确保消息的可靠性和顺序性。

    ​消息队列RocketMQ版​​是阿里云基于Apache RocketMQ构建的低延迟、高并发、高可用、高可靠的分布式“消息、事件、流”统一处理平台,面向互联网分布式应用场景提供微服务异步解耦、流式数据处理、事件驱动处理等核心能力。

    微消息队列MQTT版:面向移动端场景,移动端场景一般都具备海量设备,单设备数据较少的特点。因此,微消息队列MQTT版适用于拥有大量在线客户端(很多企业设备端过万,甚至上百万),但每个客户端消息较少的场景。

    消息队列RocketMQ版:面向服务端的消息引擎,主要用于服务组件之间的解耦、异步通知、削峰填谷等,服务器规模较小(极少企业服务器规模过万),但需要大量的消息处理,吞吐量要求高。因此,消息队列RocketMQ版适用于服务端进行大批量的数据处理和分析的场景。

    MQTT 与消息队列有一定的区别,队列是一种先进先出的数据结构,消息队列常用于应用服务层面。

    MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:

    1、使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;,MQTT 是传输协议,

    2、对负载内容屏蔽的消息传输;

    3、使用 TCP/IP 提供网络连接;

    4、有三种消息发布服务质量:

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

    “至少一次”,确保消息到达,但消息重复可能会发生。

    “只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。

    5、小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量;

    6、使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。

    2023-08-09 09:50:20
    赞同 展开评论 打赏
问答分类:
相关产品:

高弹性低成本、更稳定更安全、智能化免运维的消息队列服务,涵盖RocketMQ、Kafka、RabbitMQ、MQTT、MNS等。 RocketMQ一站式学习:https://rocketmq-learning.com

相关产品

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

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