云消息队列 MQTT 版(原"微消息队列 MQTT 版")是阿里云推出的一款面向移动互联网以及物联网领域的轻量级消息中间件。如果说传统的消息队列中间件一般应用于微服务之间,那么适用于物联网的云消息队列 MQTT 版则实现了端与云之间的消息传递和真正意义上的万物互联。本文介绍云消息队列 MQTT 版的消息收发模型、产品优势和应用场景。
"微消息队列 MQTT 版"为云消息队列 MQTT 版的曾用名,产品已更名,服务持续维护中,功能正常可用。目前无直接替代产品,如业务场景不满足需求,可评估云消息队列 RocketMQ 版或云消息队列 RabbitMQ 版等其他消息产品。
核心概念
Topic:消息主题,一级消息类型,生产者向其发送消息。
生产者:也称为消息发布者,负责生产并发送消息至Topic。
消费者:也称为消息订阅者,负责从Topic接收并消费消息。
消息:生产者向Topic发送并最终传送给消费者的数据。
规则:云消息队列 MQTT 版与其他阿里云产品实现数据互通的资源。
云消息队列 MQTT 版与 EMQX 有什么区别?是否支持 EMQX Dashboard?
云消息队列 MQTT 版与 EMQX 是两种不同形态的 MQTT 服务,区别如下:
云消息队列 MQTT 版是阿里云提供的全托管消息服务。通过控制台开通实例后,使用专属接入点直接连接,无需关注底层服务器的部署与运维。
EMQX 是开源 MQTT Broker,需要在云服务器 ECS 等计算资源上自行安装、部署和维护,所有运维工作由用户承担。
云消息队列 MQTT 版暂不支持 EMQX Dashboard 或类似第三方管理界面,监控和管理功能通过阿里云控制台实现。
消息收发模型
云消息队列 MQTT 版主要包含以下两种消息收发模型:
终端与云端服务交互模型
该模型中,云消息队列 MQTT 版将终端与云端连接起来,实现设备端和云端的双向通信。设备端通过云消息队列 MQTT 版可直接和云端的业务应用进行通信,也可和其他阿里云产品实现消息数据的跨产品互通。
该模型的典型应用场景为智能设备的状态数据上报或云端控制应用的指令下发。

终端与终端交互模型
该模型适用于移动端App或者设备之间的数据通信,典型场景是IM通信场景中两个用户直接聊天消息,以及智能设备场景中App端控制智能设备。在该模型中消息的生产者和消费者都是分布在终端设备,通过MQTT协议连接到云消息队列 MQTT 版产品。

根据以上两种消息收发模型,可以将使用云消息队列 MQTT 版的开发人员分为终端和云端两大类。两类开发人员所需的二次开发内容请分别参见终端开发指南和云端开发指南。
产品优势
无缝迁移
兼容任何支持MQTT 3.1.1协议的SDK,支持WebSocket协议,覆盖绝大多数移动端开发平台及语言。实例创建后同时生成公网接入点和内网接入点,公网接入点支持通过公司 WiFi、办公网等公共互联网环境直接连接,方便移动端或物联网设备在非阿里云 VPC 环境下接入。
服务端升级属于底层架构优化,不涉及 MQTT 协议版本变更,当前仍完整兼容 MQTT 3.1.1 协议,客户端无需因服务端升级而调整协议版本配置。
警告虽然产品兼容标准 MQTT 协议,但在使用 paho-mqtt v2、Node.js mqtt.js 等第三方开源库连接 Serverless 版实例时,可能因参数配置差异导致连接被断开。建议优先使用官方推荐的 SDK,或参考终端开发指南中的连接参数说明,调整 Keep Alive、Clean Session 等关键配置以确保连接稳定性。
高性能
支撑千万级设备在线连接,消息百万级并发,万亿级流转,毫秒级推送;分布式架构设计,无单点瓶颈,各组件间均可无限水平扩展。
安全可靠
支持设备级权限控制,支持临时Token服务以及TLS 1.2版本的安全传输协议,确保用户数据安全可靠。
天然互通
可以支持云消息队列 MQTT 版和云消息队列 RocketMQ 版的消息互通,从而实现设备端和云端的双向打通,更高效、更可靠。
应用场景
云消息队列 MQTT 版拥有多协议、多语言和多平台的支持能力,且广泛应用于移动互联网以及物联网领域,覆盖移动直播、车联网、金融支付、智能餐饮、即时聊天等多种应用场景。

云消息队列 MQTT 版是否支持私有化部署?
云消息队列 MQTT 版仅支持公有云全托管服务模式,不支持私有化部署。
如需将云消息队列 MQTT 版与 InfluxDB 等第三方产品搭配使用,建议在公有云环境中通过 VPC 内网互通或跨产品数据流转规则实现集成,以保障低延迟和数据安全。
购买云消息队列 MQTT 版
您可以在商品购买页购买云消息队列 MQTT 版实例。
实例状态显示正常但域名无法解析怎么办?
MQTT 接入点的域名解析依赖底层 RocketMQ 服务的开通状态。即使 MQTT 实例状态显示正常(例如欠费恢复后),若底层 RocketMQ 服务未单独开通,接入点域名仍无法解析。
处理步骤:
登录云消息队列 MQTT 版控制台。
检查底层 RocketMQ 服务是否已开通。
如 RocketMQ 服务未开通,手动完成开通操作。
等待域名解析恢复正常后,重新连接。