# simple-mqtt **Repository Path**: gu-beichen-starlight/simple-mqtt ## Basic Information - **Project Name**: simple-mqtt - **Description**: 学习mqtt - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-11-07 - **Last Updated**: 2025-11-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Simple MQTT Broker 一个轻量级的 MQTT Broker 实现,支持快速部署和使用。 ## 起源 - 最近各种AI的编程工具很火,通过网上对MQTT协议的详细介绍,扔给AI工具(比如cursor),一步一步实现的,这里借助了cursor,trae,JoyCode三个工具。 - 如果项目产生了侵权行为,联系必删。 ## 特性 - 支持 MQTT 协议的基本功能 - 提供基于内存的消息存储和会话管理 - 支持消息发布、订阅和客户端管理 - 提供灵活的配置选项和认证机制 ## 快速开始 ### 最简单的启动方式 你可以通过以下方式快速启动 MQTT Broker: ```java SimpleMqttApplication.main(args); ``` ### 使用用户名密码认证 在构建 Broker 时指定用户名和密码: ```java MqttBroker broker = MqttBrokerBuilder() .usernamePassword("username", "password") .build(); broker.start(); ``` ### 完整配置示例 ```java MqttBrokerConfig config = new MqttBrokerConfig("localhost", 1883, 1, 1, 1, 60, 1024, 23, sessionManager, messageStore, authHandler, serializer, businessExecutor); MqttBroker broker = new MqttBroker(config); broker.start(); ``` ## API 使用 ### 发布消息 ```java broker.publish("clientId", "topic", "payload"); ``` ### 获取客户端信息 ```java ClientInfo clientInfo = broker.getClientInfo("clientId"); ``` ### 断开客户端连接 ```java broker.disconnect("clientId"); ``` ## Builder 配置选项 使用 `MqttBrokerBuilder` 可以方便地配置 Broker 的各项参数: - `host(String host)`:设置主机名 - `port(int port)`:设置端口号 - `bossThreads(int bossThreads)`:设置 Boss 线程数 - `workerThreads(int workerThreads)`:设置 Worker 线程数 - `businessThreads(int businessThreads)`:设置业务线程数 - `keepAliveTimeout(long keepAliveTimeout)`:设置 KeepAlive 超时时间 - `maxBytesInMessage(int maxBytesInMessage)`:设置最大消息大小 - `maxClientIdLength(int maxClientIdLength)`:设置客户端 ID 最大长度 - `sessionManager(IMqttSessionManager sessionManager)`:设置会话管理器 - `messageStore(IMqttMessageStore messageStore)`:设置消息存储 - `authHandler(IMqttAuthHandler authHandler)`:设置认证处理器 - `serializer(IMessageSerializer serializer)`:设置消息序列化器 ## 架构说明 ### 核心类 - `MqttBroker`:MQTT Broker 的核心类,负责启动和停止服务 - `MqttBrokerConfig`:Broker 的配置类 - `MqttBrokerBuilder`:用于构建 Broker 的构建器类 - `MqttBrokerHandler`:处理客户端连接和消息的处理器 - `MqttBrokerProcessor`:处理 MQTT 协议消息的核心处理器 - `IMqttSessionManager`:会话管理接口 - `IMqttMessageStore`:消息存储接口 - `IMessageSerializer`:消息序列化接口 ### 依赖 - Netty:用于网络通信 - Jackson:用于 JSON 序列化和反序列化 - Lombok:简化 Java 代码的工具 ## 示例代码 请参考 `SimpleMqttApplication.java` 获取完整的启动示例。 ## 注意事项 - 确保端口未被占用 - 根据实际需求调整线程数和超时时间 - 使用合适的认证机制保护服务安全 ## 许可证 本项目使用 MIT 许可证。详情请查看 LICENSE 文件。