1. 消息QoS支持,可靠传输保证

应用

MQTT协议广泛应用于物联网、移动互联网、智能硬件、车联网、电力能源等领域。

  1. 物联网M2M通信,物联网大数据采集
  2. Android消息推送,WEB消息推送
  3. 移动即时消息,例如Facebook Messenger
  4. 智能硬件、智能家具、智能电器
  5. 车联网通信,电动车站桩采集
  6. 智慧城市、远程医疗、远程教育
  7. 电力、石油与能源等行业市场

技术选型


消息队列消息中间件适用场景不一样。

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连接,支持在海量物联网设备间低延时消息路由:

  1. 稳定承载大规模的 MQTT 客户端连接,单服务器节点支持50万到100万连接。
  2. 分布式节点集群,快速低延时的消息路由,单集群支持1000万规模的路由。
  3. 消息服务器内扩展,支持定制多种认证方式、高效存储消息到后端数据库。
  4. 完整物联网协议支持,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 等;