关于 《springboot-集成MQTT发布订阅》请点击查看;
MQTT介绍
MQTT 是 Message Queuing Telemetry Transport(消息队列遥测传输)的缩写,是 IBM 开发的一个即时通讯协议,它比较适合于在低带宽、不可靠的网络的进行远程传感器和控制设备通讯等,正在日益成为物联网通信协议的重要组成部分。
MQTT 协议的主要特性
MQTT 协议使用发布 / 订阅消息范式来做到一对多的消息分发以及应用程序的解耦;
MQTT 协议提供了 3 种(QoS)服务质量用于消息传输,适应不同的物联网数据传输场景,
- QoS 0:最多一次传送 (只负责传送,发送过后就不管数据的传送情况)
- QoS 1:至少一次传送 (确认数据交付)
- QoS 2:正好一次传送 (保证数据交付成功)
通过很小的传输开销,以及最小化的协议交换来减少网络流量
发生异常断线时通知各方的机制MQTT 服务器是发布者和订阅者之间通信的代理(因此中文也有将 MQTT 服务器翻译为 MQTT 代理),主要提供了以下的功能,基于主题的 Pub/Sub 模式,将发布者和订阅着解耦,对于服务器来说,发布者和订阅者都是“客户端”;
客户端与服务器连接都通过 TCP、TLS 或者 WebSocket
客户端(发布者)发送一条消息到服务器一个或者多个客户端(订阅者)从服务器接收消息
按照 MQTT 协议标准,服务器提供三种连接方式,- TCP:默认端口为 1883
- TLS:默认端口为 8883
- WebSocket:默认端口为 8083
搭建MQTT环境
本文使用emqx搭建MQTT服务器,使用mqtbox作为客户端。
emqx介绍
EMQ X 3.0 支持 MQTT 5.0 协议,是 开源社区中第一个 支持 5.0 协议规范的消息服务器,并且完全兼容 MQTT V3.1 和 V3.1.1 协议。除了 MQTT 协议之外,EMQ X 还支持别的一些物联网协议(具体请参见下文的 EMQ X Broker 产品功能介绍)。
高性能:单机支持百万连接,集群支持千万级连接;毫秒级消息转发。EMQ X 中应用了多种技术以实现上述功能,利用 Erlang/OTP 平台的软实时、高并发和容错;
全异步架构:连接、会话、路由、集群的分层设计,消息平面和控制平面的分离等。扩展模块和插件,EMQ X 提供了灵活的扩展机制,可以实现私有协议、认证鉴权、数据持久化、桥接转发和管理控制台等的扩展
桥接:EMQ X 可以跟别的消息系统进行对接,比如 EMQ X Enterprise 版本中可以支持将消息转发到 Kafka、RabbitMQ 或者别的 EMQ 节点等;
共享订阅:共享订阅支持通过负载均衡的方式在多个订阅者之间来分发MQTT 消息。比如针对物联网等数据采集场景,会有比较多的设备在发送数据,通过共享订阅的方式可以在订阅端设置多个订阅者来实现这几个订阅者之间的工作负载均衡;
emqx安装
- 点击emqx下载,下载后解压到任意目录,然后在emqx-windows-v4.0.5\emqx\bin下打开命令行,执行emqx start命令启动服务器:
C:\emqx-windows-v4.0.5\emqx\bin>emqx start - 打开管理界面
浏览器访问http://localhost:18083,如下:
可以在页面系统->设置中改为中文界面;
使用MQTTBox
- 点击下载,下载完毕后双击运行,界面如下:

- 点击【CreateMQTT Client】新建一个客户端并连接到服务器。

- 连接成功的如下,不成功的请检查连接信息

- 发布订阅测试

先点击订阅【Subcriber】,再点击发布【Publish】,不然收不到
测试成功,发布和订阅都正常了。
管理页面查看数据
http://localhost:18083


完毕,想要学习springboot集成mqtt的同学,请看下一篇《springboot-集成MQTT发布订阅》。