搭建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

效果:

相关推荐
HaoHao_0105 分钟前
AWS Snowball
服务器·云计算·aws·云服务器
stevewongbuaa16 分钟前
一些烦人的go设置 goland
开发语言·后端·golang
whisperrr.41 分钟前
【JavaWeb06】Tomcat基础入门:架构理解与基本配置指南
java·架构·tomcat
dot to one1 小时前
Linux 入门 常用指令 详细版
linux·服务器·centos
火烧屁屁啦2 小时前
【JavaEE进阶】应用分层
java·前端·java-ee
m0_748257462 小时前
鸿蒙NEXT(五):鸿蒙版React Native架构浅析
java
狄加山6752 小时前
Linux 基础1
linux·运维·服务器
我没想到原来他们都是一堆坏人2 小时前
2023年版本IDEA复制项目并修改端口号和运行内存
java·ide·intellij-idea
Zfox_3 小时前
HTTP cookie 与 session
linux·服务器·网络·c++·网络协议·http
Suwg2093 小时前
【由浅入深认识Maven】第1部分 maven简介与核心概念
java·maven