2018年07月19日 | Wizzer | 评论 项目首页:https://github.com/Wizzercn/MqttWk MqttWk 基于 nutzboot + 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 使用说明 软件架构说明 使用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支持(可选择是否开启) 集群功能 快速开始 下载已打包好的可运行的jar文件 运行jar文件(如果需要修改配置项,可以在application.properties修改) 打开mqtt-spy客户端, 填写相应配置下载 连接端口:8885, websocket 端口: 9995 websocket path: /mqtt 连接使用的用户名: demo 连接使用的密码: 8F3B8DE2FDC8BD3D792BE77EAC412010971765E5BDD6C499ADCEE840CE441BDEF17E30684BD95CA708F55022222CC6161D0D23C2DFCB12F8AC998F59E7213393 连接使用的证书在 mqtt-zoo\keystore\server.cer 集群使用 多机环境集群: 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.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 用户可以制作自己的证书, 但存储位置和文件名必须使用上述描述的位置及文件名 生成环境部署 生成环境部署建议使用keepalived+nginx+mqtt-broker方式 使用nginx的tcp和websocket反向代理mqtt-broker集群实现负载均衡 使用keepalived实现nginx的高可用 2,637 total views, 4 views today