- 消息QoS支持,可靠传输保证
应用
MQTT协议广泛应用于物联网、移动互联网、智能硬件、车联网、电力能源等领域。
- 物联网M2M通信,物联网大数据采集
- Android消息推送,WEB消息推送
- 移动即时消息,例如Facebook Messenger
- 智能硬件、智能家具、智能电器
- 车联网通信,电动车站桩采集
- 智慧城市、远程医疗、远程教育
- 电力、石油与能源等行业市场
技术选型
消息队列与消息中间件适用场景不一样。
MQTT 与消息队列有一定的区别,队列是一种先进先出的数据结构,消息队列常用于应用服务层面,实现参考如 RabbitMQ Kafka RocketMQ;
MQTT 是传输协议,绝大部分 MQTT Broker 不保证消息顺序(Queue),常用与物联网、消息传输等,MQTT Broker 的常见需求可参考:共享行业的分布式 MQTT 设计
消息队列与MQTT异同
| 场景 | 部署端 | MQTT | 消息队列 |
| :-- | :-- | :-- | :-- |
| 设备端上报状态数据、设备通信 | 移动终端 | √ | × |
| 接收并处理分析设备的上报数据 | 移动终端 | × | √ |
| 对多个设备下发控制指令 | 服务器 | × | √ |
| 直播、弹幕、聊天 App 收发消息 | 应用 | √ | × |
| 服务端接收并分析聊天消息 | 服务器 | × | √ |
| 客户端连接数 | | 客户端规模庞大,百万甚至千万级 | 一般服务器规模较小,极少数万级 |
| 单客户端消息量 | | 单个客户端需要处理的消息少,一般定时收发消息 | 单个客户端处理消息量大,注重吞吐量 |
感觉就是面向端的用MQTT好些,面向服务内部的用MQ
MQTT Broker选型
看了一圈,需求是Java语言,开源的,成熟的 奈何没有。。。
- EMQ X
- 优点:功能强大,成熟,国人开发,文档中文且齐全
- 缺点:Erlang语言开发,扩展难,消息存储功能只有企业版才有,也可以通过webhook免费扩展但性能肯定没有内置的强
选用:https://www.emqx.com/zh
EMQ X是一个基于Erlang语言的开源mqtt服务器,目前来看是开源的最好的mqtt服务器,也是国内开源的mqtt服务器,优点是功能全面,文档齐全,社区活跃,有很好的支持,缺点是因为erlang语言,对于其他语言的开发者自己扩展有一定难度。官方文档是:EMQ(开源)
- 其他Java未测试
EMQ X
==============================================================
简介
https://docs.emqx.cn/broker/v4.3/
EMQ X (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。
Erlang/OTP是出色的软实时 (Soft-Realtime)、低延时 (Low-Latency)、分布式 (Distributed)的语言平台。
MQTT 是轻量的 (Lightweight)、发布订阅模式 (PubSub) 的物联网消息协议。
EMQ X 设计目标是实现高可靠,并支持承载海量物联网终端的MQTT连接,支持在海量物联网设备间低延时消息路由:
- 稳定承载大规模的 MQTT 客户端连接,单服务器节点支持50万到100万连接。
- 分布式节点集群,快速低延时的消息路由,单集群支持1000万规模的路由。
- 消息服务器内扩展,支持定制多种认证方式、高效存储消息到后端数据库。
- 完整物联网协议支持,MQTT、MQTT-SN、CoAP、LwM2M、WebSocket 或私有协议支持。
安装
EMQ X 目前支持的操作系统:
- CentOS 6
- CentOS 7
- CentOS 8
- OpenSUSE tumbleweed
- Debian 9
- Debian 10
- Ubuntu 16.04
- Ubuntu 18.04
- Ubuntu 20.04
- macOS 10.13
- macOS 10.14
- macOS 10.15
- Windows Server 2019
WARNING
产品部署建议 Linux 服务器,不推荐 Windows 服务器。
地址:https://docs.emqx.cn/broker/v4.3/getting-started/install.html
多种方式,按需选择
后台启动 EMQ X
$ emqx start
EMQ X v4.0.0 is started successfully!
查看EMQ X状态
$ emqx_ctl status
Node ‘emqx@127.0.0.1’ is started
emqx 4.0.0 is running
Dashboard
EMQ X 提供了 Dashboard 以方便用户管理设备与监控相关指标。通过 Dashboard,你可以查看服务器基本信息、负载情况和统计数据,可以查看某个客户端的连接状态等信息甚至断开其连接,也可以动态加载和卸载指定插件。除此之外,EMQ X Dashboard 还提供了规则引擎的可视化操作界面,同时集成了一个简易的 MQTT 客户端工具供用户测试使用。
访问 http://localhost:18083 来查看你的 Dashboard,默认用户名是 admin
,密码是 public
可以在setting菜单选择中文语言。
常见问题
为什么选择EMQ X?
EMQ X 与别的 MQTT 服务器相比,有以下的优点:
- 经过100+版本的迭代,EMQ X 目前为开源社区中最流行的 MQTT 消息中间件,在各种客户严格的生产环境上经受了严苛的考验;
- EMQ X 支持丰富的物联网协议,包括 MQTT、MQTT-SN、CoAP、 LwM2M、LoRaWAN 和 WebSocket 等;