tlmqtt是一款基于Java
开发的轻量级高并发MQTT Broker
,采用Netty
和Project Reactor
实现异步通信,完整支持MQTT 3.1.1协议,包括QoS消息分级、主题通配符、消息持久化等核心功能。项目采用模块化设计,提供认证(文件/数据库/HTTP)、数据桥接(Kafka/MySQL)和存储(内存/Redis)等可扩展组件,支持MQTT和WebSocket双协议接入。具备生产级特性如SSL加密、会话恢复及高并发处理能力,适用于物联网和实时通信场景。通过配置文件即可快速部署,开发者可自定义认证逻辑和存储方案
CONNECT
、 PUBLISH
、 SUBSCRIBE
等核心报文解析+
、#
)的主题过滤与消息转发Retain Message
)和遗嘱消息( Will Message
)MySQL
数据库、 HTTP
接口认证,可自定义认证逻辑Kafka
、 MySQL
桥接组件,支持通过接口扩展自定义目标系统Redis
、数据库等持久化方案MQTT
(1883 端口)和 WebSocket
(8083 端口)接入能力Netty
的高性能异步 IO
,支持高并发连接SSL/TLS
加密(通过配置文件启用)CleanSession=0
时自动恢复未完成消息)模块名称 | 功能描述 |
---|---|
tlmqtt-core |
核心协议解析与消息处理逻辑 |
tlmqtt-auth |
认证模块(文件 / 数据库 / HTTP) |
tlmqtt-bridge |
数据桥接模块(Kafka/MySQL) |
tlmqtt-common |
公共工具类与配置管理 |
tlmqtt-store |
存储接口与默认实现 |
bash
git clone https://github.com/ZHSQJM/tlmqtt.git
cd tlmqtt
修改tlmqtt-common/src/main/resources/config.yml
:
yaml
# 会话配置
session:
timeout: 30 # 会话超时时间(分钟)
delay: 5 # 消息重发延迟(秒)
# 端口配置
port:
mqtt: 1883 # MQTT默认端口
websocket: 8083 # WebSocket端口
# SSL配置(可选)
ssl:
enabled: false
certPath: /path/to/cert.crt
privatePath: /path/to/private.key
# 认证配置(默认开启)
auth:
enabled: true
user:
- username: "admin"
password: "123456"
java
import com.tlmqtt.bootstrap.TlBootstrap;
import com.tlmqtt.server.TlMqttServer;
public class Main {
public static void main(String[] args) {
TlBootstrap bootstrap = new TlBootstrap();
bootstrap.setServer(TlMqttServer.class).start();
}
}
import com.tlmqtt.bootstrap.TlBootstrap;
import com.tlmqtt.server.TlWebSocketServer;
public class Main {
public static void main(String[] args) {
TlBootstrap bootstrap = new TlBootstrap();
bootstrap.setServer(TlWebSocketServer.class).start();
}
}
在config.yml
中添加用户:
auth:
user:
- username: "user1"
password: "pass1"
- username: "user2"
password: "pass2"
bootstrap.setAuth(false); // 关闭默认认证
// 或添加自定义认证器
bootstrap.addAuthentication(new AbstractTlAuthentication() {
@Override
public boolean authenticate(String username, String password) {
return "admin".equals(username) && "secret".equals(password);
}
});
TlMySqlInfo mysqlInfo = new TlMySqlInfo();
mysqlInfo.setHost("127.0.0.1")
.setPort(3306)
.setDatabase("mqtt_db")
.setTable("messages")
.setUsername("root")
.setPassword("123456");
bootstrap.addBridgeMysql(mysqlInfo); // 注册MySQL桥接
bootstrap.setSessionService(redisSessionService)
欢迎通过以下方式参与项目共建:
联系方式:
tlmqtt致力于为物联网开发者提供轻量、高效的 MQTT 消息服务,期待您的加入!