基于Java实现的分布式MQTT集群,SMQTT的升级版本!欢迎大家使用,顺便动动小手Star一下! https://gitee.com/quickmsg/smqttx
1. 修改集群互踢逻辑,采用异步方式集群节点剔除,剔除逻辑是统一ClientId只能建立唯一连接。
2. 修改多数据源由单例模式改成多实例,避免多数据源配置加载出现非线程安全问题
3. 修改服务端SSL/TLS证书加密时候未开启客户端认证导致的安全问题
快速开始
<dependency>
<artifactId>smqttx-spring-boot-starter</artifactId>
<groupId>io.github.quickmsg</groupId>
<version>2.0.11</version>
</dependency>
<!--屏蔽h2版本冲突-->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.197</version>
</dependency>
配置文件
application.yaml中添加配置
smqtt:
logLevel: INFO # 系统日志
tcp: # tcp配置
port: 1883 # mqtt端口号
wiretap: false# 二进制日志 前提是 smqtt.logLevel = DEBUG
bossThreadSize: 8# boss线程 默认=cpu核心数
workThreadSize: 16 # work线程 默认=cpu核心数*2
businessThreadSize: 32 # 业务线程数 默认=cpu核心数*10
businessQueueSize: 100000 #业务队列 默认=100000
messageMaxSize: 4194304 # 接收消息的最大限制 默认4194304(4M)
lowWaterMark: 4000000 # 不建议配置 默认 32768
highWaterMark: 80000000 # 不建议配置 默认 65536
# globalReadWriteSize: 10000000,100000000全局读写大小限制
# channelReadWriteSize: 10000000,100000000 单个channel读写大小限制
options:
SO_BACKLOG: 2000
auth:
fixed:
username: smqtt
password: smqtt
http: # http相关配置 端口固定60000
host: 127.0.0.1
accessLog: true # http访问日志
admin: # 后台管理配置
username: smqtt # 访问用户名
password: smqtt # 访问密码
ws: # websocket配置
enable: true # 开关
port: 8999 # 端口
path: /mqtt # ws 的访问path mqtt.js请设置此选项
cluster: # 集群配置
addresses: ["127.0.0.1"]
meter:
meterType: PROMETHEUS # INFLUXDB , PROMETHEUS
启动服务
在SpringBootApplication启动类上添加 @EnableMqttServer
,然后启动服务即可