MQTT协议介绍与Broker列表
MQTT协议介绍
MQTT是什么?
MQTT 是基于 Publish/Subscribe(发布/订阅) 模式的物联网通信协议,凭借简单易实现、支持 QoS、报文小等特点。
MQTT中文文档:EMQ X 消息服务器简介 | EMQ Docs
wiki各种语言版本开发库:
https://github.com/mqtt/mqtt.github.io/wiki/libraries?spm=a2c4g.11186623.2.11.2d73174cN52z60
MQTT角色组成
1、服务端(Broker)
EMQX就是一个MQTT的Broker,emqx只是基于erlang语言开发的软件而已,类似的还有java、netty、nio框架。
此外还要其他的MQTT Broker如下:
MQTT Broker 有几个:
1. Eclipse Mosquitto: https://github.com/eclipse/mosquitto
使用 C 语言实现的 MQTT Broker。Eclipse 组织还还包含了大量的 MQTT 客户端项目:https://www.eclipse.org/paho/#
2. EMQX: https://github.com/emqx/emqx
使用 Erlang 语言开发的 MQTT Broker,支持许多其他 IoT 协议比如 CoAP、LwM2M 等
3. Mosca: https://github.com/mcollina/mosca
使用 Node.JS 开发的 MQTT Broker,简单易用。
4. VerneMQ: https://github.com/vernemq/vernemq
同样使用 Erlang 开发的 MQTT Broker
2、客户端(发布[生产者]/订阅[消费者])
EMQX 通过里面的websocket 可以实现消息的发布与订阅
当然我们常常会通过java代码来实现我们消息的生产者和消费者
在安装好EMQX代理服务器后,EMQX 不仅仅为我们提供了Mqtt broker,EMQX 的dashboard(一个EMQX的web界面)可以通过 websocket 这个功能实现消息的发布与订阅
MQTT Broker 比较与选型
列举几个热门开源的 MQTT Broker,其中部分项目提供商业支持,做简单选型对比。
EMQ-X | HiveMQ | ActiveMQ | Mosquitto | |
---|---|---|---|---|
License | 开源+商用 | 开源+商用 | 开源 | 开源 |
公司 | 杭州映云科技 | dc-square ,德国 | Apache 项目维护者 | Eclipse 开源社区 |
开发语言 | Erlang | Java | Java | C |
连接数 | 开源十万级,商用百万级 | 开源25个,商用百万级 | 千万级 | |
系统性能 | 单机十万 | 单机百万 | 集群千万 | 支持集群 |
协议支持 | MQTT、CoAP、MQTT-SN、WebSocket、LwM2M | MQTT | MQTT、JMS、Openwire、Stomp、AMQP、WebSocket XMPP | MQTT、WebSocket |
MQTT 5.0 | √ | √ | × | √ |
认证鉴权 | TLS/DTLS、ClientID/IP地址/用户密码认证、根据IP地址/ClientID/用户名访问控制LDAP/Redis/MySQL/MongoDB/PostgreSQL/HTTP API认证 | TLS/DTLS、X.509证书、JWT、OAuth2.0、应用协议(ID/用户名/密码)、配置文件形式的认证与 ACL 功能 | LDAP (JAAS)、Apache Shiro | × |
规则引擎 | 开源支持基础规则引擎,商用支持增强规则引擎 | × | × | × |
消息存储 | 开源不支持,商用支持Redis、MySQL、MongoDB、InfluxDB、OpenTSDB等 | 提供 Java SDK | JDBC、KahaDB、LevelDB | × |
扩展集成 | WebHook、Trigger、Plugin、LuaHook、PythonHook、JavaHook、大量REST API | Trigger、Plugin 、Java SDK | 少量队列管理 REST API | × |
管理监控 | Dashboard、Prometheus、Grafana | HiveMQ Control Center、Prometheus、Grafana、InfluxDB 监控 | Prometheus、Grafana | × |
更多 MQTT Broker 服务器
- EMQ X. Scalable and Reliable Real-time MQTT 5.0 Message Broker for IoT in 5G Era.
- Adafruit IO
- HiveMQ
- ActiveMQ
- ActiveMQ Artemis
- RabbitMQ
- Mosquitto
- flespi
- IBM MessageSight
- Mosca. More recently by the same author: Aedes
- MQTT Dashboard
- Eclipse IoT
- VerneMQ
- Solace
- CloudMQTT
- Wave
- vertx-mqtt-broker
- JoramMQ
- Moquette MQTT
- MQTTnet. Embedded MQTT broker, C#
- MyQttHub
- Jmqtt
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2020-10-14 notepad++使用技巧