Wizzercn / MqttWk

Java + Netty 实现的高并发高可用MQTT服务broker,轻松支持10万并发(有群友实现了130万在线)
Apache License 2.0
635 stars 229 forks source link

MqttWk - by netty

[![GitHub release](https://img.shields.io/github/release/Wizzercn/MqttWk.svg)](https://github.com/Wizzercn/MqttWk/releases) [![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html) [![PowerByNutz](https://img.shields.io/badge/PowerBy-NutzBoot-green.svg)](https://github.com/nutzam/nutzboot)

本项目开源免费,欢迎交流学习、贡献代码。

MqttWk

开发指南

技术体系

  1. 使用 netty 实现通信及协议解析
  2. 使用 nutzboot 提供依赖注入及属性配置
  3. 使用 redis 实现消息缓存,集群
  4. 使用 kafka 实现消息转发(可选)

项目结构

MqttWk
  ├── mqtt-auth -- MQTT服务连接时用户名和密码认证
  ├── mqtt-broker -- MQTT服务器功能的核心实现
  ├── mqtt-common -- 公共类及其他模块使用的服务接口及对象
  ├── mqtt-store -- MQTT服务器会话信息(redis缓存及kafka加载)
  ├── mqtt-client -- MQTT客户端示例代码(配置文件修改数据库连接启动之)
  ├── mqtt-zoo -- 教程文档或文件
    ├── mqtt-test-kafka -- kafka消费者接收消息
    ├── mqtt-test-websocket -- websocket通信测试示例

功能说明

  1. 参考MQTT3.1.1规范实现
  2. 完整的QoS服务质量等级实现
  3. 遗嘱消息, 保留消息及消息分发重试
  4. 心跳机制
  5. MQTT连接认证(可选择是否开启)
  6. SSL方式连接(可选择是否开启)
  7. 主题过滤(支持单主题订阅如 test_topic /mqtt/test --不能以/结尾, 通配符订阅 # /mqtt/# --以#结尾)
  8. Websocket支持(可选择是否开启)
  9. 集群功能(可选择是否开启)
  10. Kafka消息转发功能(可选择是否开启)
  11. 启动后查看统计数据 http://127.0.0.1:8922/open/api/mqttwk/info

快速开始

集群使用

mqttwk:
  broker:
    cluster-on: true
    kafka:
      # 是否启用kafka消息转发
      broker-enabled: false
      bootstrap:
        servers: 192.168.1.101:9092,192.168.1.102:9093
redis:
  mode: cluster
  nodes: 192.168.1.103:16379,192.168.1.104:26379,192.168.1.103:36379
mqttwk:
  broker:
    cluster-on: true
    kafka:
      # 是否启用kafka消息转发
      broker-enabled: false
      bootstrap:
        servers: 192.168.1.101:9092,192.168.1.102:9093
redis:
  mode: normal
  host: 127.0.0.1
  port: 6379

自定义 - 连接认证

自定义 - 服务端证书

生产环境部署

示例截图

示例截图

参考项目

如果您觉得还不错请在右上角点一下 star,帮忙转发,谢谢 🙏🙏🙏 大家的支持是开源最大动力