不需要消息持久化,只需要短时间的消息分发,可以只用mqtt吗?

不需要消息持久化,只需要短时间的消息分发,可以只用mqtt吗?

展开
收起
真的很搞笑 2023-05-02 08:06:58 114 分享 版权
2 条回答
写回答
取消 提交回答
  • 是的,此回答整理自钉群“阿里云 微消息队列 MQTT产品咨询群”

    2023-05-03 20:39:08
    赞同 展开评论
  • 十年摸盘键,代码未曾试。 今日码示君,谁有上云事。

    MQTT实例本身并不提供消息数据持久化功能,消息数据持久化需要搭配后端的消息存储实例来使用。因此每一个阿里云MQTT实例都必须配套一个消息存储实例,即RocketMQ实例来提供消息数据持久化功能,因此他们之间可以说是消息互通的,即可用RocketMQ订阅的方式来消费用MQTT协议发布的消息,同理也可用 MQTT协议订阅的方式来消费RocketMQ发布的消息。

    微消息队列MQTT基于MQTT协议实现,单个客户端的处理能力较弱。因此,微消息队列MQTT适用于拥有大量在线客户端(很多企业设备端过万,甚至上百万),但每个客户端消息较少的场景。

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

    由于物联网的环境是非常特别的,所以MQTT遵循以下设计原则:

    (1)精简,不添加可有可无的功能;

    (2)发布/订阅(Pub/Sub)模式,方便消息在传感器之间传递;

    (3)允许用户动态创建主题,零运维成本;

    (4)把传输量降到最低以提高传输效率;

    (5)把低带宽、高延迟、不稳定的网络等因素考虑在内;

    (6)支持连续的会话控制;

    (7)理解客户端计算能力可能很低;

    (8)提供服务质量管理;

    (9)假设数据不可知,不强求传输数据的类型与格式,保持灵活性。

    MQTT:即时通讯协议,主要用去物联网,轻量级,结构简单,传输快,不支持事务,没有持久化相关设计。适用于计算能力有限低带宽,网络不稳定的场景(RabbitMQ,ACTIVEMQ)

    2023-05-02 11:12:12
    赞同 1 展开评论
问答分类:

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系列产品 Serverless 化。RocketMQ 中文社区:https://rocketmq-learning.com/

收录在圈子:
+ 订阅
阿里云 云原生应用平台 肩负阿里巴巴集团基础设施云化以及核心技术互联网化的重要职责,致力于打造稳定、标准、先进的云原生产品,成为云原生时代的引领者,推动行业全面想云原生的技术升级,成为阿里云新增长引擎。商业化产品包括容器、云原生中间件、函数计算等。
还有其他疑问?
咨询AI助理