IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> smqtt:高性能开源MQTT消息代理Broker -> 正文阅读

[网络协议]smqtt:高性能开源MQTT消息代理Broker

SMQTT基于reactor-netty(spring-webflux底层依赖) 开发,底层采用Reactor3反应堆模型,支持单机部署,支持容器化部署,具备低延迟,高吞吐量,支持百万TCP连接,同时支持多种协议交互,是一款非常优秀的消息中间件!

一:smqtt目前拥有的功能如下:

在这里插入图片描述

1:消息质量等级实现(支持qos0,qos1,qos2)

2:topicFilter支持

①topic分级(test/test)
②+支持(单层匹配
③ 支持(多层匹配)

3:会话消息

①默认内存存储
②支持持久化(redis/db)

4:保留消息

①默认内存存储
②支持持久化(redis/db)

5:遗嘱消息

①设备掉线时候触发

6:客户端认证

①支持spi注入外部认证

7:tls加密

①支持tls加密(mqtt端口/http端口)

8:websocket协议支持

①使用mqtt over websocket

9:http协议交互

①支持http接口推送消息
②支持spi扩展http接口

10:SPI接口扩展支持

①消息管理接口(会话消息/保留消息管理)
②通道管理接口 (管理系统的客户端连接)
③认证接口 (用于自定义外部认证)
拦截器 (用户自定义拦截消息)

10:集群支持(gossip协议实现)

12:容器化支持

①默认镜像最新tag: 1ssqq1lxr/smqtt

13:持久化支持(session 保留消息)

14:规则引擎支持

15:支持springboot starter启动

16:管理后台

请参考smqtt文档如何启动管理后台

17:grafana监控集成

①支持influxdb
②支持prometheus

18:ACL权限管理

①对设备、资访问授权

19:认证模块

①支持http
②支持匿名
③支持固定密码
④支持sql

二:尝试一下

管理说明其他
121.40.92.152:1883mqtt端口用户名:smqtt 密码:smqtt
121.40.92.152:18888mqtt over websocket用户名:smqtt 密码:smqtt
http://121.40.92.152:60000/smqtt/admin管理后台用户名:smqtt 密码:smqtt

三:商业化版本

如果遇到接入性能问题,或者需要定制化开发的,我们提供SY版本出售,WX17512575402

四:启动方式

1:main方式启动

<!--smqtt依赖 -->
<dependency>
  <groupId>io.github.quickmsg</groupId>
  <artifactId>smqtt-core</artifactId>
  <version>${Latest version}</version>
</dependency>
<!--集群依赖 -->
<dependency>
   <artifactId>smqtt-registry-scube</artifactId>
   <groupId>io.github.quickmsg</groupId>
   <version>${Latest version}</version>
</dependency>
<!--管理ui依赖 -->
<dependency>
   <artifactId>smqtt-ui</artifactId>
   <groupId>io.github.quickmsg</groupId>
   <version>${Latest version}</version>
</dependency>

2:阻塞式启动服务:

   Bootstrap.builder()
                .rootLevel(Level.INFO)
                .websocketConfig(
                        BootstrapConfig.WebsocketConfig
                                .builder()
                                .enable(false)
                                .path("/mqtt")
                                .port(8888)
                                .build()
                )
                .tcpConfig(
                        BootstrapConfig
                                .TcpConfig
                                .builder()
                                .port(1883)
                                .ssl(SslContext.builder().enable(false).build())
                                .build())
                .httpConfig(
                        BootstrapConfig
                                .HttpConfig
                                .builder()
                                .enable(false)
                                .accessLog(true)
                                .admin(BootstrapConfig.HttpAdmin.builder().enable(true).username("smqtt").password("smqtt").build())
                                .build())
                .clusterConfig(
                        BootstrapConfig.
                                ClusterConfig
                                .builder()
                                .enable(false)
                                .namespace("smqtt")
                                .node("node-1")
                                .port(7773)
                                .url("127.0.0.1:7771,127.0.0.1:7772").
                                build())
                .build()
                .startAwait();

3:非阻塞式启动服务

   Bootstrap.builder()
                .rootLevel(Level.INFO)
                .websocketConfig(
                        BootstrapConfig.WebsocketConfig
                                .builder()
                                .enable(false)
                                .path("/mqtt")
                                .port(8888)
                                .build()
                )
                .tcpConfig(
                        BootstrapConfig
                                .TcpConfig
                                .builder()
                                .port(1883)
                                .ssl(SslContext.builder().enable(false).build())
                                .build())
                .httpConfig(
                        BootstrapConfig
                                .HttpConfig
                                .builder()
                                .enable(false)
                                .accessLog(true)
                                .admin(BootstrapConfig.HttpAdmin.builder().enable(true).username("smqtt").password("smqtt").build())
                                .build())
                .clusterConfig(
                        BootstrapConfig.
                                ClusterConfig
                                .builder()
                                .enable(false)
                                .namespace("smqtt")
                                .node("node-1")
                                .port(7773)
                                .url("127.0.0.1:7771,127.0.0.1:7772").
                                build())
                .build()
                .startAwait();

4:jar方式:

1:下载源码 mvn compile package -Dmaven.test.skip=true -P jar,web

下载源码 mvn compile package -Dmaven.test.skip=true -P jar,web

2:下载源码 mvn compile package -Dmaven.test.skip=true -P jar,web

config.yaml

3:启动服务

java -jar smqtt-bootstrap-1.0.1-SNAPSHOT.jar <config.yaml路径>

5:docker 方式

拉取镜像

拉取docker镜像地址

docker pull 1ssqq1lxr/smqtt:latest

启动镜像默认配置

#启动服务
docker run -it -p 1883:1883 1ssqq1lxr/smqtt
#启动镜像使用自定义配置(同上准备配置文件config.yaml)

#启动服务
docker run -it -v <配置文件路径目录>:/conf -p 1883:1883 -p 1999:1999 1ssqq1lxr/smqtt

6:springboot方式

1:引入依赖

<dependency>
    <groupId>io.github.quickmsg</groupId>
    <artifactId>smqtt-spring-boot-starter</artifactId>
    <version>${Latest version >= 1.0.8}</version>
</dependency>

2:启动类Application上添加注解 @EnableMqttServer

3:配置application.yml文件

properties也支持,但是需要自己转换,没有提供demo文件
config.yaml

4:启动springboot服务服务即可

5:如果引入的是spring-boot-starter-parent的管理包,如果启动报错,则需要添加以下依赖

<dependency>
    <groupId>io.projectreactor</groupId>
    <artifactId>reactor-core</artifactId>
    <version>3.4.9</version>
</dependency>
<dependency>
<groupId>io.projectreactor.netty</groupId>
<artifactId>reactor-netty</artifactId>
<version>1.0.10</version>
</dependency>

五:地址


GitHub项目:  https://github.com/quickmsg/smqtt
Gitee项目:  https://gitee.com/quickmsg/mqtt-cluster

https://www.smqtt.cc/
//wiki
https://wiki.smqtt.cc/

六:管理后台

在这里插入图片描述

八:监控页面

在这里插入图片描述

九:Jvm监控

在这里插入图片描述

十:Netty监控

在这里插入图片描述

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:55:47  更:2022-11-05 00:56:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 18:43:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码