能不能再了解一下, 微消息队列MQTT和消息队列RocketMQ, 到底有什么区别, 对应的场景是什么呀?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
微消息队列mqtt是mqtt协议的一个服务端实现,在设计上是面向移动互联网和物联网领域的解决海量移动端设备的接入,不稳定网络消息传输的中间件;RocketMQ是面向应用,提供应用解耦,削峰填谷,消息可靠传输能力的中间件。所以简单你可以理解有设备端和云上应用交互的用mqtt,云上应用和云上应用解耦的,用rocketmq https://www.aliyun.com/product/mq4iot?spm=5176.28055625.J_3207526240.279.e939154asFOvHF&scm=20140722.M_4691265._.V_1官网有一些介绍可以看看,另外,mqtt可以是rocketmq的一个面向海量设备接入的一个网关实现。rocketmq可以是mqtt的可靠存储。,此回答整理自钉群“阿里云 微消息队列 MQTT产品咨询群”
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
微消息队列 MQTT 版是专为移动互联网(MI)、物联网(IoT)领域设计的消息产品,覆盖互动直播、金融支付、智能餐饮、即时聊天、移动 Apps、智能设备、车联网等多种应用场景;通过对 MQTT、WebSocket 等协议的全面支持,连接端和云之间的双向通信,实现 C2C、C2B、B2C 等业务场景之间的消息通信,可支撑千万级设备与消息并发,如果说传统的消息队列中间件一般应用于微服务之间,那么适用于物联网的微消息队列 MQTT 版则实现了端与云之间的消息传递和真正意义上的万物互联。
微消息队列 MQTT 版相当于一个具备无限扩展能力的连接网关,不仅提供了自闭环的消息收发和存储能力,还提供了规则转入转出能力。
微消息队列 MQTT 版具有以下优势:
支持的都是标准协议,例如 MQTT、STOMP,应用方无技术捆绑,使用绝大多数开源的 SDK 即可无缝迁移到云上。 作为一个海量移动终端长连接网关,后端通过规则引擎和阿里云其他消息产品数据打通,应用可以无需搭建自己的网关即可实现端和云的双向通信。 支持设备级权限控制,并支持 SSL/TLS 加密通信,数据传输更安全可靠。
在物联网 IoT 场景中,成千上万(甚至数百万)规模的设备传感器可使用微消息队列 MQTT 版上传数据,需做数据分析的服务端(即部署在服务器上的应用)则可以通过消息队列 RocketMQ 版完成数据的分析与处理。
在车联网场景中,上百万辆车需要上传车辆信息数据到云端(服务端),云端同时也会下发指令到任意车辆或广播到所有的车辆。车辆可以通过 MQTT SDK 连接到微消息队列 MQTT 版实现数据上报以及指令接收,监管系统(数据分析系统)可以通过消息队列 RocketMQ 版的 SDK 进行消息订阅以及指令下发。
基于以上区别,推荐您在移动端设备上使用微消息队列 MQTT 版,而在服务端应用中则使用消息队列 RocketMQ 版(或者其他消息产品)。
微消息队列 MQTT 版和消息队列 RocketMQ 版的具体功能特性的对比如下。
对于部署在服务器上的应用,推荐使用消息队列 RocketMQ 版接入。 对于部署在移动终端、App 或浏览器页面等平台上的应用,推荐使用微消息队列 MQTT 版接入。
涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/