MqttWk 基于 NutzBoot + t-io 的 MQTT Broker开源项目

我要开发同款
匿名用户2018年07月20日
38阅读
开发技术Java
所属分类服务器软件、JMS/消息中间件
授权协议Apache

作品详情

MqttWk

基于nutzboot+netty或t-io+redis+kafka实现的MQTT服务broker

本项目代码主要来源于netty/t-io/iot-mqtt-server等众多项目,开源免费,欢迎交流学习

参考项目

https://github.com/netty/netty

https://gitee.com/tywo45/tio-showcase/

https://gitee.com/recallcode/iot-mqtt-server

使用说明软件架构说明

使用netty或t-io实现通信及协议解析

使用nutzboot提供依赖注入及属性配置

使用redis实现消息缓存,集群

使用kafka实现消息代理

项目结构MqttWk  ├── mqtt-codec -- MQTT协议解析的t-io实现  ├── mqtt-auth -- MQTT服务连接时用户名和密码认证  ├── mqtt-broker -- MQTT服务器功能的核心实现  ├── mqtt-common -- 公共类及其他模块使用的服务接口及对象  ├── mqtt-store -- MQTT服务器会话信息(redis缓存及kafka加载)  ├── mqtt-zoo -- 教程文档或文件    ├── mqtt-test-kafka -- kafka消费者接收消息    ├── mqtt-test-websocket -- websocket通信测试示例功能说明

参考MQTT3.1.1规范实现

完整的QoS服务质量等级实现

遗嘱消息,保留消息及消息分发重试

心跳机制

MQTT连接认证(可选择是否开启)

SSL方式连接(可选择是否开启)

主题过滤(支持单主题订阅如/mqtt/test--不可以/结尾,通配符订阅/mqtt/#--以/#结尾)

Websocket支持(可选择是否开启)

集群功能(可选择是否开启)

Kafka消息转发功能(可选择是否开启)

快速开始

项目根目录执行 mvninstall

mqtt-broker下执行 mvncleanpackagenutzboot:shade 进行打包

java-jarmqtt-broker-xxx.jar-Dnutz.profiles.active=prod [此时加载application-prod.properties配置文件]

打开mqtt-spy客户端,填写相应配置下载

连接端口:8885,websocket端口:9995websocket

连接使用的用户名:demo

连接使用的密码:8F3B8DE2FDC8BD3D792BE77EAC412010971765E5BDD6C499ADCEE840CE441BDEF17E30684BD95CA708F55022222CC6161D0D23C2DFCB12F8AC998F59E7213393

连接使用的证书在 mqtt-zoo\keystore\server.cer

集群使用

多机环境集群:

mqttwk.broker.cluster-on=true

mqttwk.broker.kafka.bootstrap.servers=192.168.1.101:9092,192.168.1.102:9093

redis.mode=cluster

redis.nodes=192.168.1.103:16379,192.168.1.104:26379

单机环境集群:

mqttwk.broker.cluster-on=true

mqttwk.broker.kafka.bootstrap.servers=127.0.0.1:9092,127.0.0.1:9093

redis.mode=normal

redis.host=127.0.0.1

自定义-连接认证

默认只是简单使用对用户名进行RSA密钥对加密生成密码,连接认证时对密码进行解密和相应用户名进行匹配认证

使用中如果需要实现连接数据库或其他方式进行连接认证,只需要重写mqtt-auth模块下的相应方法即可

自定义-服务端证书

服务端证书存储在mqtt-broker的resources/keystore/server.jks

用户可以制作自己的证书,但存储位置和文件名必须使用上述描述的位置及文件名

生产环境部署

多机环境集群

负载均衡:富人用L4Switch,穷人用LinuxHAProxy

示例截图

 

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论