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
MQTT协议介绍与Broker列表的更多相关文章
- MQTT协议介绍
http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.pdf MQTT 文档 http://mqtt.org/new/wp-c ...
- Tsung MQTT协议简介及MQTT xml文档配置介绍
MQTT协议简介及MQTT xml文档配置介绍 by:授客 QQ:1033553122 1. MQTT协议介绍 MQTT(Message Queuing Telemetry Transport,消息队 ...
- 基于rabbitmq之MQTT协议的智能家居
智能家居项目 智能可燃气体报警器 产品是一款可燃气体报警器,如果家中燃气泄露浓度到达一定阈值,报警器检测到并上传气体浓度值给后台,后台以电话.短信.微信等方式,提醒用户家中可能有气体泄漏. 用户还可能 ...
- 基于MQTT协议进行应用开发
官方协议有句如下的话来形容MQTT的设计思想: "It is designed for connections with remote locations where a "sma ...
- 什么是MQTT协议?
MQTT协议介绍 MQTT协议是什么? MQTT(Message Queuing Telemetry Transport Protocol)的全称是消息队列遥感传输协议的缩写,是一种基于轻量级代理的发 ...
- MQTT协议QoS服务质量 (Quality of Service 0, 1 & 2)概念学习
什么是 QoS ? QoS (Quality of Service) 是发送者和接收者之间,对于消息传递的可靠程度的协商. QoS 的设计是 MQTT 协议里的重点.作为专为物联网场景设计的协议,MQ ...
- MQTT协议的简单介绍和服务器的安装
最近公司做的项目中有用到消息推送,经过多方面的筛选之后确定了使用MQTT协议,相对于XMPP,MQTT更加轻量级,并且占用用户很少的带宽. MQTT是IBM推出的一种针对移动终端设备的基于TCP/IP ...
- 采用MQTT协议实现android消息推送(2)MQTT服务端与客户端软件对比、android客户端示列表
1.服务端软件对比 https://github.com/mqtt/mqtt.github.io/wiki/servers 名称(点名进官网) 特性 简介 收费 支持的客户端语言 IBM MQ 完整的 ...
- 物联网MQTT协议分析和开源Mosquitto部署验证
在<物联网核心协议—消息推送技术演进>一文中已向读者介绍了多种消息推送技术的情况,包括HTTP单向通信.Ajax轮询.Websocket.MQTT.CoAP等,其中MQTT协议为IBM制定 ...
- Android实现推送方式解决方案 - 长连接+心跳机制(MQTT协议)
本文介绍在Android中实现推送方式的基础知识及相关解决方案.推送功能在手机开发中应用的场景是越来起来了,不说别的,就我们手机上的新闻客户端就时不j时的推送过来新的消息,很方便的阅读最新的新闻信息. ...
随机推荐
- 超级详细的Oracle安装图文详解!手把手教会您从下载到安装!
首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485532&idx=1 ...
- fastposter 2.1.1 紧急版本发布 电商级海报生成器
fastposter 2.1.1 紧急版本发布 电商级海报生成器 fastposter低代码海报生成器,一分钟完成海报开发.支持Java Python PHP Go JavaScript等多种语言. ...
- cesium常见问题和解决
- opensips开启lua支持
操作系统 :CentOS 7.6_x64 opensips版本 :2.4.9 lua版本:5.1 今天整理下CentOS7环境下opensips2.4.9的lua模块笔记及使用示例,并提供运行效果截图 ...
- 原生Django出现同源策略跨域的解决方式
解决方式: 在返回数据的时候,添加响应头信息: 例如:
- Android 13 - Media框架(32)- ACodec(八)
关注公众号免费阅读全文,进入音视频开发技术分享群! 拖了好久都没有更新,前面写的东西都有些忘了,回过头来再看之前写的内容,觉得有很多地方写的不好,或者说现在又有了新的理解,想要重新修改但是需要修改的内 ...
- 给师妹写的《Java并发编程之线程池十八问》被表扬啦!
写在开头 之前给一个大四正在找工作的学妹发了自己总结的关于Java并发中线程池的面试题集,总共18题,将之取名为<Java并发编程之线程池十八问>,今天聊天时受了学妹的夸赞,心里很 ...
- Pyinstaller打包exe的反编译——LitCTF 2024(公开赛道)ezpython!!!!!
这个工具折磨了我很久,搭配题目记录一下... 题目 Die 打包工具: PyInstaller 建议下载GitHub的:GitHub - extremecoders-re/pyinstxtractor ...
- Vue渲染函数与JSX指南
title: Vue渲染函数与JSX指南 date: 2024/6/3 下午6:43:53 updated: 2024/6/3 下午6:43:53 categories: 前端开发 tags: Vue ...
- ETL工具-nifi干货系列 第十七讲 nifi Input Port&Out Port 实战教程
1.端口(Port),包含输入端口(Input Port)和输出端口(Out Port ) 使用一个或多个处理组构建的数据流需要一种方式将处理组连接到其他数据流组件. 处理组和处理组之间可以通过使用端 ...