# JMQTT **Repository Path**: java_wang_xiao_bai/jmqtt ## Basic Information - **Project Name**: JMQTT - **Description**: JMQTT是用java语言开发的支持mqtt协议的高可用,高性能,高可扩展性的broker,采用netty作为通信层组件,支持插件化开发 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 159 - **Created**: 2019-12-09 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [English](README.md) | **中文** ## Jmqtt **注意**:`master` 分支在开发时可能不稳定,导致打包的文件不能运行甚至不能打包,请使用 [releases](https://github.com/Cicizz/jmqtt/releases) 版本 ![Jmqtt logo](jmqtt.png) ## 功能特性 * 基于Java及Netty开发,插件化模式,高性能,高扩展性 * 支持mqtt协议qos0,qos1,qos2消息质量服务 * 支持mqtt协议cleansession,retain,will等消息服务 * 完整支持mqtt Topic匹配过滤 * 支持websocket协议 * 支持RocksDB进行数据本地存储,数据高可靠 ## 快速开始 在线测试环境:`120.24.69.113`,TCP端口:`1883`;Websocket端口:`1884`,欢迎使用! 1. 下载 [release](https://github.com/Cicizz/jmqtt/releases) 或`clone`本项目 2. 在根目录执行:`mvn -Ppackage-all -DskipTests clean install -U` 3. 在 `jmqtt-distrubution/target/jmqtt/bin` 目录下直接运行 `jmqttstart`脚本即可 4. 本地启动:找到BrokerStartup类,配置启动环境变量:key是`JMQTT_HOME`,value是`jmqtt-distribution`所在的绝对地址,配置的目的是指定jmqtt配置文件和日志配置文件所在的地址。 ## 架构设计图 ![架构图](jmqtt%20design.jpg) ## 模块简介及本地环境 * **broker**:mqtt协议层,逻辑处理,BrokerStartup为启动类,BrokerController为初始化类,初始化所有的必备环境,其中acl,store的插件配置也必须在这里初始化 * **common**:公共层,存放工具类,bean类等 * **remoting**:通信层,连接管理,协议解析,心跳等 * **distribution**:配置模块,主要是配置文件,启停命令等存放 * **example**:客户端示例,目前只有java以及websocket * **group**:集群管理模块:消息传输,集群管理,以及相关运维功能实现 * **store**:存储模块,提供了mqtt协议数据的几个接口,支持基于内存的和Rocksdb的本地存储 ## RoadMap ### Version 3.x 1. 支持简单运维功能 2. 支持RocketMQ Bridge 3. 支持Kafka Bridge 4. 支持$SYS Topic监控 ### Version 2.x 1. 支持集群化,多主机横向扩展,实现高可用 2. 支持SSL/TLS 3. 支持安全认证 ### Version 1.1.0 1. 添加connect,publish,subsribe权限认证接口,可插件化 2. 移除Redis存储 3. 优化Rocksdb本地存储,现在性能提高了很多,并且容易管理 4. 修复订阅的bug 5. 修复离线消息不能接收的bug 6. 修复retain消息偶尔接收不到的bug 7. 添加storeLog,remotingLog,messageTraceLog,clientTraceLog记录日志 ### Version 1.0.0 1. 完整支持mqtt协议 2. 支持Websocket协议 3. 支持数据本地持久化 ## 技术交流群 ![jmqtt技术交流群](jmqtt_qq.png)