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. TCP/IP协议栈及网络基础

    TCP/IP协议栈及网络基础 目录 TCP/IP协议栈及网络基础 1. TCP/IP协议栈及网络基础 1.1 OSI网络模型 1.2 TCP/IP网络模型 1.2.1 物理层 1.2.2 数据链路层 ...

  2. ES 2024 新特性

    ECMAScript 2024 新特性 ECMAScript 2024, the 15th edition, added facilities for resizing and transferrin ...

  3. Gitee千Star优质项目解析: ng-form-element低开引擎解析

    好家伙, 在写项目的时候,我发现自己的平台的组件写的实在是太难看了,于是想去gitee上偷点东西,于是我们本期的受害者出现了 gitee项目地址 https://gitee.com/jjxliu306 ...

  4. 现代农业|AIRIOT智慧农业管理解决方案

    ​ 智慧农业是现代化技术在农业领域的应用和成果,其中物联网技术在促生产.保产量和降本增效方面起到了至关重要的作用.运用传感技术和软件平台系统对农业生产进行智能化平台化管理,解决掉传统农业问题的诸多痛点 ...

  5. python openstacksdk

    调用方法 参考地址 https://github.com/openstack/openstacksdk 注意事项 1.需要安装openstacksdk.我这里装的好像是1.5版本的.opentask接 ...

  6. [Unity] 实现AssetBundle资源加载管理器

    实现Unity AssetBundle资源加载管理器 AssetBundle是实现资源热更新的重要功能,但Unity为其提供的API却十分基(jian)础(lou).像是自动加载依赖包.重复加载缓存. ...

  7. wpf 空间坐标系下,画一个立方体轮廓

    代码: public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); Worignpt ...

  8. 【C#】操作word 【Aspose.Words】

    上图是要填充的word模板,就是一个接口说明文档.那个像书名号括起来的东西就是要替换的,这个东西并不是键盘输入的书名号,它是文档部件的一种,要插入这个东西需要: 打开模板word文件,用office打 ...

  9. Swoole 源码分析之 Timer 定时器模块

    原文首发链接:Swoole 源码分析之 Timer 定时器模块 大家好,我是码农先森. 引言 Swoole 中的毫秒精度的定时器.底层基于 epoll_wait 和 setitimer 实现,数据结构 ...

  10. Android 12(S) MultiMedia(十四)ESQueue

    之前看到在ATSParser::Pogram::Stream中会创建一个ESQueue,用于存储解析出来的ES data,这个ESQueue到底是用来做什么的呢?这节就来研究研究. 1.构造函数 ES ...