MQTT协议介绍

MQTT是什么?

MQTT 是基于 Publish/Subscribe(发布/订阅) 模式的物联网通信协议,凭借简单易实现、支持 QoS、报文小等特点。

官网https://mqtt.org/

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 服务器

MQTT协议介绍与Broker列表的更多相关文章

  1. 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 ...

  2. Tsung MQTT协议简介及MQTT xml文档配置介绍

    MQTT协议简介及MQTT xml文档配置介绍 by:授客 QQ:1033553122 1. MQTT协议介绍 MQTT(Message Queuing Telemetry Transport,消息队 ...

  3. 基于rabbitmq之MQTT协议的智能家居

    智能家居项目 智能可燃气体报警器 产品是一款可燃气体报警器,如果家中燃气泄露浓度到达一定阈值,报警器检测到并上传气体浓度值给后台,后台以电话.短信.微信等方式,提醒用户家中可能有气体泄漏. 用户还可能 ...

  4. 基于MQTT协议进行应用开发

    官方协议有句如下的话来形容MQTT的设计思想: "It is designed for connections with remote locations where a "sma ...

  5. 什么是MQTT协议?

    MQTT协议介绍 MQTT协议是什么? MQTT(Message Queuing Telemetry Transport Protocol)的全称是消息队列遥感传输协议的缩写,是一种基于轻量级代理的发 ...

  6. MQTT协议QoS服务质量 (Quality of Service 0, 1 & 2)概念学习

    什么是 QoS ? QoS (Quality of Service) 是发送者和接收者之间,对于消息传递的可靠程度的协商. QoS 的设计是 MQTT 协议里的重点.作为专为物联网场景设计的协议,MQ ...

  7. MQTT协议的简单介绍和服务器的安装

    最近公司做的项目中有用到消息推送,经过多方面的筛选之后确定了使用MQTT协议,相对于XMPP,MQTT更加轻量级,并且占用用户很少的带宽. MQTT是IBM推出的一种针对移动终端设备的基于TCP/IP ...

  8. 采用MQTT协议实现android消息推送(2)MQTT服务端与客户端软件对比、android客户端示列表

    1.服务端软件对比 https://github.com/mqtt/mqtt.github.io/wiki/servers 名称(点名进官网) 特性 简介 收费 支持的客户端语言 IBM MQ 完整的 ...

  9. 物联网MQTT协议分析和开源Mosquitto部署验证

    在<物联网核心协议—消息推送技术演进>一文中已向读者介绍了多种消息推送技术的情况,包括HTTP单向通信.Ajax轮询.Websocket.MQTT.CoAP等,其中MQTT协议为IBM制定 ...

  10. Android实现推送方式解决方案 - 长连接+心跳机制(MQTT协议)

    本文介绍在Android中实现推送方式的基础知识及相关解决方案.推送功能在手机开发中应用的场景是越来起来了,不说别的,就我们手机上的新闻客户端就时不j时的推送过来新的消息,很方便的阅读最新的新闻信息. ...

随机推荐

  1. HTML link标签中preload,prefetch,dns-prefetch,preconnect,prerender

    Preload 在我们的浏览器加载资源的时候,对于每一个资源都有其自身的默认优先级,倘若我们能修改每一个资源的默认优先级,那我们几乎可以按照我们的预期加载想要加载的资源. 以谷歌浏览器为例,我们打开控 ...

  2. U.2与M.2接口

    U.2接口 U.2接口别称SFF-8639,是由固态硬盘形态工作组(SSD Factor Work Group)推出的接口规范.U.2接口不但能支持SATA-Express(一种PCI-E与SATA混 ...

  3. DNS(4) -- dns功能实现-配置正向解析和反向解析以及DNS递归查询示例

    目录 1 DNS配置示例 1.1 DNS解析类型 1.2 配置正向解析 1.3 配置反向解析 1.4 DNS递归查询 1.4.1 开启递归查询 1.4.2 关闭递归查询 1 DNS配置示例 1.1 D ...

  4. WEB服务与NGINX(2)-NGINX的I/O模型

    WEB服务与NGINX(2)-NGINX的I/O模型 目录 WEB服务与NGINX(2)-NGINX的I/O模型 1. linux I/0模型及在NGINX中的应用 1.1 I/O模型概述 1.2 系 ...

  5. 密码学—Vigenere破解Python程序

    文章目录 概要 预备知识点学习 整体流程 技术名词解释 技术细节 小结 代码 概要 破解Vigenere需要Kasiski测试法与重合指数法的理论基础 具体知识点细节看下面这两篇文章 预备知识点学习 ...

  6. java学习之旅(day.02)

    java运行机制 编译型:转换为计算机可读的语言 解释型:用什么,读什么 预编译:java文件(源程序)通过javac命令到class文件,class文件(类)放入类加载器,这个类就加载到JVM中了, ...

  7. Haproxy+Nginx+Tomcat实现动静分离页面

    一.Haproxy概述: 二.Haproxy原理实现: 三.Nginx.LVS.Haproxy对比: 四.Haproxy配置文件讲解: 五.案例:Haproxy+Nginx+Tomcat搭建高可用集群 ...

  8. Django项目windows上开发,虚拟机上调通打包,生产环境解压即用

    linux上部署Django项目 首先创建一个简易的Django项目 使用自动生成的这个数据库 压缩上传 解压运行,不可以 [root@mcw1 /opt/mcwtest]$ ls app01 db. ...

  9. uniapp video组件全屏导致页面横竖错乱问题

    uniapp video组件全屏导致页面横竖错乱问题 背景介绍 使用 video组件做一个视频播放功能,不全屏的情况正常.在苹果手机上全屏后,点击左上角退出全屏,页面出现问题如下图问题,主要系统iOS ...

  10. 安装 MySQL ZIP 版本

    安装 MySQL 的 ZIP 版本相对于安装包版本稍微复杂一些,因为它需要手动解压和配置.以下是在 Windows 上安装 MySQL ZIP 版本的步骤: 下载 MySQL ZIP 文件: 前往 M ...