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

效果:

相关推荐
小小鸭程序员7 分钟前
Vue组件化开发深度解析:Element UI与Ant Design Vue对比实践
java·vue.js·spring·ui·elementui
Asthenia041220 分钟前
编译原理基础:FIRST 集合与 FOLLOW 集合的构造与差异
后端
H13469489025 分钟前
企业服务器备份软件,企业服务器备份的方法有哪些?
运维·服务器·负载均衡
Asthenia041229 分钟前
编译原理基础:FOLLOW 集合与 LL(1) 文法条件
后端
陌路物是人非31 分钟前
SpringBoot + Netty + Vue + WebSocket实现在线聊天
vue.js·spring boot·websocket·netty
skywalk816332 分钟前
OpenRouter开源的AI大模型路由工具,统一API调用
服务器·前端·人工智能·openrouter
Asthenia041236 分钟前
编译原理基础:FIRST 集合与提取公共左因子
后端
南宫生41 分钟前
Java迭代器【设计模式之迭代器模式】
java·学习·设计模式·kotlin·迭代器模式
seabirdssss1 小时前
通过动态获取项目的上下文路径来确保请求的 URL 兼容两种启动方式(IDEA 启动和 Tomcat 部署)下都能正确解析
java·okhttp·tomcat·intellij-idea
愚润求学1 小时前
Linux开发工具——apt
linux·服务器·开发语言