MQTT中文站
  • 首页
  • MQTT 学习
    • MQTT 入门
    • MQTT 进阶
    • MQTT 编程
    • MQTT 实例
    • MQTT 要点
    • MQTT5 要点
    • MQTT 工具
    • MQTT 客户端库
    • MQTT 服务器
    • Zigbee2MQTT
    • Sparkplug
    • Home Assistant
    • Node-RED
      • Node-RED 安装部署
      • Node-RED 用户指南
      • Node-RED 创建节点
      • Node-RED 示例教程
      • Node-RED 开发流程
      • Node-RED 接口参考
      • Node-RED 配置模板
      • Node-RED 常见问题
  • MQTT 规范
    • MQTT 5 规范
    • MQTT 3.1.1 规范
    • MQTT 3.1 规范
    • MQTT-SN v1.2规范
    • Sparkplug® v3.0.0规范
  • 产品中心
  • 解决方案
    • 环境监测
    • 工业制造
    • 智慧水利
    • 水利管网
    • 积水监测
    • 综合管廊
    • 档案库房
    • 交通物流
    • 智慧城市
    • 智慧农业
    • 智慧养殖
    • 能源电力
    • 石油石化
    • 智能家居
    • 物联网
    • 汽车与出行
  • 使用文档
  • MQTT 云平台
  • 登录
  • 注册

SMQTT - 开源高性能 MQTT 服务器

2 年前 • MQTT 客户端库

SMQTT 是一款高性能、开源的 MQTT 服务器,旨在提供支持单机、容器化和集群部署的 MQTT 服务,具备低延迟和高吞吐量,支持数百万 TCP 连接。本文将向您介绍 SMQTT 的主要功能、优势以及适用场景。

WIKI: https://wiki.smqtt.cc/

gitee: https://gitee.com/quickmsg

为什么选择 MQTT?

MQTT 是一种轻量级的消息传递协议,采用发布/订阅模型,非常适用于物联网消息传递,如传感器、手机、嵌入式设备等。其低开销和高效性使其成为 IoT 设备之间进行可靠消息传递的理想选择。

优势

SMQTT 具有以下显著优势:

  1. 标准 MQTT 协议支持: SMQTT 实现了 MQTT 协议的标准版本,包括 3.1 和 3.1.1,确保了与各种 MQTT 客户端的兼容性。
  2. 高并发支持: SMQTT 可应对高并发场景,而且支持集群化部署,使其适用于大规模部署。
  3. 高性能和高吞吐量: SMQTT 是基于 Reactor-Netty(Spring WebFlux 的底层依赖)开发的,底层采用 Reactor3 反应堆模型,具备卓越的性能和高吞吐量。此外,它还利用 Netty 提供原生性能优势。
SMQTT - 开源高性能 MQTT 服务器-MQTT中文站

功能

SMQTT 具备多种功能,包括但不限于:

  1. 标准协议功能: 支持 MQTT 协议的标准功能,包括发布/订阅、QoS 等。
  2. 数据持久化: SMQTT 支持将消息数据持久化存储,以确保数据安全和可靠性。您可以选择默认内存存储或持久化存储到 Redis 或数据库。
  3. 规则引擎: 支持规则引擎,可以用于消息处理和转发。
  4. 集群化功能: SMQTT 提供集群支持,使用 Gossip 协议实现集群通信,确保高可用性。
  5. 管理监控页面: 提供管理后台,用于管理和监控 MQTT 服务器,同时支持 Grafana 监控集成,以实现性能监控。
  6. ACL 权限管理: 支持对设备和资源的访问授权,确保数据安全性。
  7. 认证模块: 提供多种认证方式,包括 HTTP、匿名、固定密码和 SQL 认证。
  8. 拦截器: 支持自定义消息拦截器,用于处理消息。
  9. 容器化支持: 支持容器化部署,方便集成到现有容器化环境中。

总结

SMQTT 的启动和管理非常简单,支持 Spring Boot Starter,可以轻松地将其集成到 Spring Boot 项目中。此外,您可以访问管理后台以监控和管理 MQTT 服务器。

如果您正在寻找一款高性能、开源的 MQTT 服务器,SMQTT 可能是您的理想选择。它支持各种协议、高并发场景和集群化部署,具备优秀的性能和可扩展性,适用于各种 IoT 和通信需求。

启动方式

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>

阻塞式启动服务:

        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();

非阻塞式启动服务:

    Bootstrap bootstrap = 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()
                .start().block();

jar方式

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

在smqtt-bootstrap/target目录下生成jar

2.准备配置文件 config.yaml

config.yaml

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

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

springboot方式

  1. 引入依赖
<dependency>
    <groupId>io.github.quickmsg</groupId>
    <artifactId>smqtt-spring-boot-starter</artifactId>
    <version>${Latest version >= 1.0.8}</version>
</dependency>
  • 启动类Application上添加注解 @EnableMqttServer
  • 配置application.yml文件properties也支持,但是需要自己转换,没有提供demo文件config.yaml
  • 启动springboot服务服务即可
  • 如果引入的是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>
打赏赞微海报分享
mqtt qos 客户端库 客户端服务器

基于 java aio 实现,开源、低延迟、高性能百万级 java mqtt client 组件和 java mqtt broker 服务

风电场升压站物联网智慧建设方案

猜你喜欢

改善基础设施:HiveMQ如何推动智能城市发展

改善基础设施:HiveMQ如何推动智能城市发展

08/07
2024
为什么企业选择全托管HiveMQ云进行MQTT部署

为什么企业选择全托管HiveMQ云进行MQTT部署

07/01
2024
MQTT 赋能工业 PLC 数据采集与应用

MQTT 赋能工业 PLC 数据采集与应用

06/30
2024

回复

抢沙发咯
  • 解决方案
    • 智能家居
    • 汽车与出行
    • 工业制造
    • 能源电力
    • 石油石化
    • 交通物流
    • 零售
  • 学习
    • MQTT 规范
    • MQTT 教程
    • MQTT 软件
    • MQTT 客户端库
    • MQTT 服务器
    • 工具和应用程序
  • 关于我们
    • 了解创科慧仁
    • 加入创科慧仁
    • 投资者关系
    • 新闻动态
    • 合作伙伴
    • 联系我们
  • 友情链接
    • Modbus中文网
    • 跳动符号官网
    • 物联网世界
    • RFID世界网
    • 深圳物联网协会
    • isoftstone软通动力
    • 中国发展战略学研究会
    • B.P商业伙伴
  • 在线客服
  • 全国客户服务热线
    4006909885
  • 官方公众号
  • 联系邮箱
    contact@mqtt.cn
Copyright © 2025 MQTT中文站. All rights reserved.Designed by nicetheme. 京ICP备20029519号
在线客服

微信咨询

微信咨询

4006909885

服务热线 7*24小时

电话咨询
  • 首页
  • MQTT 学习
    • MQTT 入门
    • MQTT 进阶
    • MQTT 编程
    • MQTT 实例
    • MQTT 要点
    • MQTT5 要点
    • MQTT 工具
    • MQTT 客户端库
    • MQTT 服务器
    • Zigbee2MQTT
    • Sparkplug
    • Home Assistant
    • Node-RED
  • MQTT 规范
    • MQTT 5 规范
    • MQTT 3.1.1 规范
    • MQTT 3.1 规范
    • MQTT-SN v1.2规范
    • Sparkplug® v3.0.0规范
  • 产品中心
  • 解决方案
    • 环境监测
    • 工业制造
    • 智慧水利
    • 水利管网
    • 积水监测
    • 综合管廊
    • 档案库房
    • 交通物流
    • 智慧城市
    • 智慧农业
    • 智慧养殖
    • 能源电力
    • 石油石化
    • 智能家居
    • 物联网
    • 汽车与出行
  • 使用文档
  • MQTT 云平台
  • 登录
  • 注册
 

正在加载评论...
 

您必须登录才能发表评论。

    string(5) "2.0.0"