SMQTT基于Netty开发,底层采用Reactor3反应堆模型,支持单机部署,支持容器化部署,具备低延迟,高吞吐量,支持百万TCP连接,同时支持多种协议交互,是一款非常优秀的消息中间件!
引入依赖
<dependency>
<groupId>io.github.quickmsg</groupId>
<artifactId>smqtt-core</artifactId>
<version>1.0.6</version>
</dependency>
阻塞式启动服务:
Bootstrap.builder()
.rootLevel(Level.INFO)
.wiretap(false)
.port(8555)
.websocketPort(8999)
.options(channelOptionMap -> { })//netty options设置
.childOptions(channelOptionMap -> { }) //netty childOptions设置
.highWaterMark(1000000)
.reactivePasswordAuth((U, P) -> true)
.lowWaterMark(1000)
.ssl(false)
.sslContext(new SslContext("crt", "key"))
.isWebsocket(true)
.httpOptions(Bootstrap.HttpOptions.builder().enableAdmin(true).ssl(false).accessLog(true).build())
.clusterConfig(
ClusterConfig.builder()
.clustered(false)
.port(7773)
.nodeName("node-2")
.clusterUrl("127.0.0.1:7771,127.0.0.1:7772")
.build()
)
.build()
.startAwait();
非阻塞式启动服务:
Bootstrap bootstrap = Bootstrap.builder()
.rootLevel(Level.INFO)
.wiretap(false)
.port(8555)
.websocketPort(8999)
.options(channelOptionMap -> { })//netty options设置
.childOptions(channelOptionMap -> { }) //netty childOptions设置
.highWaterMark(1000000)
.reactivePasswordAuth((U, P) -> true)
.lowWaterMark(1000)
.ssl(false)
.sslContext(new SslContext("crt", "key"))
.isWebsocket(true)
.httpOptions(Bootstrap.HttpOptions.builder().enableAdmin(true).ssl(false).accessLog(true).build())
.clusterConfig(
ClusterConfig.builder()
.clustered(false)
.port(7773)
.nodeName("node-2")
.clusterUrl("127.0.0.1:7771,127.0.0.1:7772")
.build()
)
.build()
.start().block();
下载源码 mvn compile package -Dmaven.test.skip=true -P jar,web
在smqtt-bootstrap/target目录下生成jar
准备配置文件 config.properties
smqtt.log.level=INFO
smqtt.tcp.port=1883
smqtt.tcp.lowWaterMark=4000000
smqtt.tcp.highWaterMark=80000000
smqtt.tcp.ssl=false
smqtt.tcp.wiretap=false
smqtt.tcp.bossThreadSize=4
smqtt.tcp.workThreadSize=8
smqtt.websocket.port=8999
smqtt.websocket.enable=true
smqtt.tcp.username=smqtt
smqtt.tcp.password=smqtt
smqtt.http.enable=true
smqtt.http.accesslog=true
smqtt.http.ssl.enable=false
smqtt.http.admin.enable=true
smqtt.http.admin.username=smqtt
smqtt.http.admin.password=smqtt
smqtt.cluster.enable=false
smqtt.cluster.url=127.0.0.1:7771,127.0.0.1:7772
smqtt.cluster.port=7771
smqtt.cluster.node=node-1
启动服务
java -jar smqtt-bootstrap-1.0.1-SNAPSHOT.jar
拉取镜像
# 拉取docker镜像地址
docker pull 1ssqq1lxr/smqtt:latest
启动镜像默认配置
# 启动服务
docker run -it -p 1883:1883 1ssqq1lxr/smqtt
启动镜像使用自定义配置(同上准备配置文件conf.properties)
# 启动服务
docker run -it -v <配置文件路径目录>:/conf -p 1883:1883 -p 1999:1999 1ssqq1lxr/smqtt
启动客户端订阅主题 test/+
使用http接口推送mqtt消息
curl -H "Content-Type: application/json" -X POST -d '{"topic": "test/teus", "qos":2, "retain":true, "message":"我来测试保留消息3" }' "http://localhost:1999/smqtt/publish"
main启动
设置httpOptions && enableAdmin = true
Bootstrap.httpOptions(Bootstrap.HttpOptions.builder().enableAdmin(true).ssl(false).accessLog(true).build())
jar / docker 启动
设置config.properties
# 开启http
smqtt.http.enable=true
# 开启http日志
smqtt.http.accesslog=true
# 开启ssl
smqtt.http.ssl.enable=false
# smqtt.http.ssl.crt =
# smqtt.http.ssl.key =
# 开启管理后台(必须开启http)
smqtt.http.admin.enable=true
# 管理后台登录用户
smqtt.http.admin.username=smqtt
# 管理后台登录密码
smqtt.http.admin.password=smqtt
集群类配置参考文档:
手机扫一扫
移动阅读更方便
你可能感兴趣的文章