# springboot-mqtt **Repository Path**: lcz2000/springboot-mqtt ## Basic Information - **Project Name**: springboot-mqtt - **Description**: 本项目基于 Spring Boot 2.x 构建,用于演示如何使用 MQTT 协议进行消息发布与订阅 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-05-29 - **Last Updated**: 2025-11-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 项目介绍 本项目基于 Spring Boot 2.x 构建,用于演示如何使用 MQTT 协议进行消息发布与订阅。 ## 项目结构 springboot-mqtt/ ├── src │ ├── main │ │ ├── java/com/example/springbootmqtt │ │ │ ├── config # MQTT配置类、回调处理、客户端管理 │ │ │ ├── controller # 控制器类,用于发送MQTT消息 │ │ │ └── SpringbootMqttApplication.java # 启动类 │ │ └── resources │ │ └── application.yml # 配置文件(MQTT Broker地址、客户端信息等) │ └── test │ └── java/com/example/springbootmqtt │ └── SpringbootMqttApplicationTests.java # 单元测试 ├── pom.xml # Maven依赖管理 ├── mvnw/mvnw.cmd # Maven Wrapper脚本 └── README.md # 当前文档 ## 开发环境要求 - JDK 1.8 - Maven 3.x - MQTT Broker(如 EMQX)运行在本地或远程服务器上 - IDE:IntelliJ IDEA / Eclipse / VS Code 等支持 Java 的编辑器 ## 功能说明 - MQTT连接与重连机制:通过 AbsMqttCallBack 实现断线自动重连。 - 消息订阅与发布: - 使用 MqttClientManager 管理多个客户端连接。 - SendController 提供 REST 接口 /sendMessage 发布消息到指定主题。 - 回调处理:使用 DefaultMqttCallBack 处理接收到的消息。 ## mqtt 启动后访问地址 http://localhost:18083/#/ - 用户名/密码: - admin/public --- 1. 每个客户端可以订阅一个或者多个主题 2. 每个客户端不订阅主题,也可以发送主题消息 3. 客户端A发送消息给客户端B流程为: ``` 客户端A>>>Broker>>>客户端B --- 前置条件: a: 客户端A 发送主题消息,且与客户端B的订阅主题一致 b: 客户端B 订阅主题 ``` --- mqtt启动命令 在bin目录下,cmd 执行 ```shell .\emqx console ```