指数
0
Watch 39 Star 92 Fork 32

Zze / JMQTTJavaApache-2.0

加入码云
与超过 300 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
JMQTT是用java语言开发的支持mqtt协议的高可用,高性能,高可扩展性的broker,采用netty作为通信层组件,支持插件化开发 展开 收起

  • Java 63.1%
  • JavaScript 33.7%
  • HTML 1.4%
  • Shell 1.1%
  • Batchfile 0.7%
克隆/下载
Zze 最后提交于 cluster complete
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README_CN.md

English | 中文

Jmqtt

注意master 分支在开发时可能不稳定,导致打包的文件不能运行甚至不能打包,请使用 releases 版本

Jmqtt logo

功能特性

  • 基于Java及Netty开发,插件化模式,高性能,高扩展性
  • 支持mqtt协议qos0,qos1,qos2消息质量服务
  • 支持mqtt协议cleansession,retain,will等消息服务
  • 完整支持mqtt Topic匹配过滤
  • 支持websocket协议
  • 支持RocksDB进行数据本地存储,数据高可靠

快速开始

在线测试环境:120.24.69.113,TCP端口:1883;Websocket端口:1884,欢迎使用!

  1. 下载 releaseclone本项目

  2. 在根目录执行:mvn -Ppackage-all -DskipTests clean install -U

  3. jmqtt-distrubution/target/jmqtt/bin 目录下直接运行 jmqttstart脚本即可

  4. 本地启动:找到BrokerStartup类,配置启动环境变量:key是JMQTT_HOME,value是jmqtt-distribution所在的绝对地址,配置的目的是指定jmqtt配置文件和日志配置文件所在的地址。

架构设计图

架构图

模块简介及本地环境

  • 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技术交流群

点评 ( 5 )

你可以在登录后,发表评论

搜索帮助

14_float_left_people 14_float_left_close