搭建mqtt服务端并在Spring Boot项目中集成mqtt

文章目录

一、MQTT

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种轻量级的消息传输协议,设计用于在低带宽、高延迟或不可靠的网络连接下,实现设备之间的通信。MQTT 协议最初由 IBM 在 1999 年开发,现在已经成为物联网(IoT)领域广泛使用的通信协议之一。

1.MQTT 的特点

  1. 发布/订阅模式:MQTT 使用发布/订阅消息模式,允许客户端发布消息到主题(topics),并订阅感兴趣的主题。这种模式解耦了发布者和订阅者,使得系统更加灵活和可扩展。
  2. 轻量级:MQTT 协议的设计目标是简单和高效,具有较小的消息开销,适用于资源受限的设备,如传感器和嵌入式系统。
  3. QoS 级别:MQTT 支持不同的服务质量(QoS)级别,包括"最多一次"(At most once)、"至少一次"(At least once)和"正好一次"(Exactly once),以满足不同的可靠性需求。
  4. 保留消息:MQTT 允许发布保留消息,这些消息在订阅者连接时会立即发送,确保订阅者能够获取最新的状态信息。
  5. 离线消息:MQTT 代理可以保存订阅者的离线消息,并在订阅者重新连接时发送给它们。

2.MQTT 的工作原理

MQTT 网络由 MQTT 代理(broker)和 MQTT 客户端组成。

  • MQTT 代理(Broker):负责接收来自客户端的消息,并将这些消息转发给订阅了相应主题的客户端。代理是消息的中心枢纽,管理主题订阅和消息分发。
  • MQTT 客户端(Client):可以连接到代理,发布消息到主题,以及订阅感兴趣的主题以接收消息。客户端可以是设备、传感器、应用程序等。

3.MQTT 的应用场景

  1. 物联网(IoT):在物联网中,MQTT 广泛用于设备之间的通信,实现设备状态监控、远程控制、数据采集等功能。
  2. 移动应用:MQTT 适用于移动应用,因为它具有低带宽和低功耗的特点,可以减少数据使用并延长电池寿命。
  3. 实时通信:在需要实时数据传输的场景中,如股票市场、社交网络更新等,MQTT 可以提供快速的消息传递。
  4. 远程监控和自动化:在工业自动化、智能家居、远程监控等领域,MQTT 用于设备之间的通信和控制。

二、EMQX(服务端)

EMQX 是一个高性能的 MQTT 消息服务器,由 EMQ(上海创센智能科技有限公司)开发。EMQX 旨在提供一个可扩展、高可用和易于管理的 MQTT broker,适用于大规模物联网应用。

1.EMQX 的特点

  1. 高性能:EMQX 能够处理大量的并发连接和高吞吐量的消息传输,适用于大规模物联网部署。
  2. 可扩展性:支持集群模式,可以水平扩展以应对不断增加的负载。
  3. 安全性:提供多种安全功能,包括TLS/SSL 加密、访问控制、认证授权等,保护数据传输和系统安全。
  4. 灵活性:支持多种消息协议,除了 MQTT 之外,还支持 HTTP、CoAP、LwM2M 等,满足不同设备和应用的需求。
  5. 管理工具:提供丰富的管理工具和API,方便监控、管理和集成到现有系统中。
  6. 云原生支持:EMQX 适合在容器化和云环境中部署,支持 Kubernetes 等容器编排工具。

2.安装

这里我用的是windows版本

参考:

https://blog.csdn.net/xiaolong1126626497/article/details/134280836

https://blog.csdn.net/qq_37165235/article/details/138193161

windows版本: 链接: https://pan.baidu.com/s/1_uYkOz76tWEm99MmxHyOdg?pwd=2vsg 提取码: 2vsg

安装好后访问 ip:18083 即可进入后台如下图所示:

三、客户端

1.MQTTX

这个是EMQX官方的客户端工具

下载地址 https://mqttx.app/zh

安装后配置好即可连接到前面安装的emqx服务器,如下图所示

2.EMQX后台建客户端

如下图所示,在后台也可以直接建立客户端连接,测试发布订阅

3.H5页面客户端

参考:

https://blog.csdn.net/qq_37165235/article/details/138193161

项目地址:https://gitee.com/neil-xu/mqtt-test-html.git

效果:

4.Spring Boot集成mqtt做客户端

参考:

https://blog.csdn.net/qq_42862247/article/details/125536672?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword\~default-0-125536672-blog-144117489.235^v43^pc_blog_bottom_relevance_base6\&spm=1001.2101.3001.4242.1\&utm_relevant_index=3

项目地址:https://gitee.com/neil-xu/mqtt-demo.git

效果:

相关推荐
程序员JerrySUN12 分钟前
驱动开发硬核特训 · Day 21(上篇) 抽象理解 Linux 子系统:内核工程师的视角
java·linux·驱动开发
codingandsleeping20 分钟前
Express入门
javascript·后端·node.js
只因只因爆36 分钟前
如何在idea中写spark程序
java·spark·intellij-idea
ss27341 分钟前
基于Springboot + vue + 爬虫实现的高考志愿智能推荐系统
spring boot·后端·高考
你憨厚的老父亲突然42 分钟前
从码云上拉取项目并在idea配置npm时完整步骤
java·npm·intellij-idea
全栈凯哥1 小时前
桥接模式(Bridge Pattern)详解
java·设计模式·桥接模式
雨声不在1 小时前
debian切换用户
linux·服务器·debian
PXM的算法星球1 小时前
【软件工程】面向对象编程(OOP)概念详解
java·python·软件工程
两点王爷1 小时前
springboot项目文件上传到服务器本机,返回访问地址
java·服务器·spring boot·文件上传
小吕学编程1 小时前
ES练习册
java·前端·elasticsearch