logo
0
0
WeChat Login
ruok<ruoook@qq.com>
Initial commit

Spring Integration MQTT Demo

基于 Spring Integration 和 MQTT 协议的消息通信示例项目,展示了如何在 Spring Boot 应用中实现 MQTT 消息的发布和订阅。

📋 目录

🛠 技术栈

  • Spring Boot
  • Spring Integration - 企业集成模式框架
  • Spring Integration MQTT - MQTT 协议支持
  • Eclipse Paho - MQTT 客户端库
  • Java 17

✨ 项目特性

  • ✅ MQTT 消息发布(支持多种发送方式)
  • ✅ MQTT 消息订阅(动态添加订阅主题)
  • ✅ 支持 QoS 0/1/2 三种服务质量等级
  • ✅ 支持消息保留(Retained)
  • ✅ 异步消息发送
  • ✅ 字节数组消息支持
  • ✅ RESTful API 接口
  • ✅ 灵活的配置管理

🚀 快速开始

前置要求

  1. JDK 17 或更高版本
  2. Maven 3.6+
  3. MQTT Broker(如 Mosquitto、EMQX 等)

📁 项目结构

src/main/java/com/example/springintegrationmqttdemo/ ├── SpringIntegrationMqttDemoApplication.java # 主启动类 ├── config/ │ └── MqttConfig.java # MQTT 配置类 ├── constants/ │ └── MqttConstants.java # 常量定义 ├── controller/ │ └── MqController.java # REST 控制器 └── mq/ ├── handler/ │ └── MyMessageHandler.java # 消息处理器 └── producer/ └── MyGateway.java # 消息发送网关

核心组件说明

MqttConfig.java

配置 MQTT 连接工厂、消息通道、入站/出站适配器等核心组件。

MyGateway.java

消息发送网关接口,提供多种消息发送方法:

  • 基本发送
  • 指定主题发送
  • 设置 QoS 级别
  • 保留消息
  • 异步发送
  • 字节数组发送

MyMessageHandler.java

消息处理器,负责处理接收到的 MQTT 消息。

MqController.java

REST API 控制器,提供 HTTP 接口用于发送消息和管理订阅。

QoS 级别说明

QoS说明使用场景
0最多一次,不保证送达不重要的数据,如传感器读数
1至少一次,可能重复重要数据,可容忍重复
2恰好一次,保证送达且不重复关键数据,如支付信息

📚 参考资料

📄 许可证

本项目仅供学习和参考使用。

🤝 贡献

欢迎提交 Issue 和 Pull Request!