不需要消息持久化,只需要短时间的消息分发,可以只用mqtt吗?[阿里云消息队列MQ]

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

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
1 条回复 A 作者 M 管理员
  1. 是的,此回答整理自钉群“阿里云 微消息队列 MQTT产品咨询群”

  2. 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)