{"id":13487146,"url":"https://github.com/quickmsg/smqtt","last_synced_at":"2025-05-16T00:08:51.727Z","repository":{"id":38192141,"uuid":"361597154","full_name":"quickmsg/smqtt","owner":"quickmsg","description":"开源 MQTT 服务器(基于reactor-netty实现高性能的、可扩展、支持千万级设备接入集群）支持 mqtt 3.1.1、mqtt 5等协议","archived":false,"fork":false,"pushed_at":"2023-04-09T02:48:10.000Z","size":5977,"stargazers_count":849,"open_issues_count":2,"forks_count":203,"subscribers_count":33,"default_branch":"main","last_synced_at":"2025-04-08T11:11:27.310Z","etag":null,"topics":["iot","java","java-8","mqtt","mqtt-broker","netty","reactor3"],"latest_commit_sha":null,"homepage":"https://www.smqtt.cc","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/quickmsg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-04-26T02:46:35.000Z","updated_at":"2025-03-24T08:18:26.000Z","dependencies_parsed_at":"2024-01-16T09:00:53.192Z","dependency_job_id":null,"html_url":"https://github.com/quickmsg/smqtt","commit_stats":{"total_commits":671,"total_committers":13,"mean_commits":51.61538461538461,"dds":"0.49925484351713856","last_synced_commit":"9d3239bbf5a018bc2ad925b0d676c80138ef5ab1"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quickmsg%2Fsmqtt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quickmsg%2Fsmqtt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quickmsg%2Fsmqtt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quickmsg%2Fsmqtt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/quickmsg","download_url":"https://codeload.github.com/quickmsg/smqtt/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254442854,"owners_count":22071878,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["iot","java","java-8","mqtt","mqtt-broker","netty","reactor3"],"created_at":"2024-07-31T18:00:55.896Z","updated_at":"2025-05-16T00:08:46.684Z","avatar_url":"https://github.com/quickmsg.png","language":"Java","readme":"## SMQTT重磅升级\n感谢大家帮忙给新项目点Star,感谢!\n- [Gitee](https://gitee.com/quickmsg/smqttx)\n- [Github](https://github.com/quickmsg/smqttx)\n- \n\n\n## ![image](icon/logo.png) SMQTT开源的MQTT消息代理Broker\n\nSMQTT基于reactor-netty(spring-webflux底层依赖)\n开发，底层采用Reactor3反应堆模型,支持单机部署，支持容器化部署，具备低延迟，高吞吐量，支持百万TCP连接，同时支持多种协议交互，是一款非常优秀的消息中间件！\n\n## smqtt目前拥有的功能如下：\n\n![架构图](icon/component.png)\n\n1. 消息质量等级实现(支持qos0，qos1，qos2)\n2. topicFilter支持\n    - topic分级（test/test）\n    - +支持（单层匹配）\n    - *支持（多层匹配）\n3. 会话消息\n    - 默认内存存储\n    - 支持持久化（redis/db）\n4. 保留消息\n    - 默认内存存储\n    - 支持持久化（redis/db）\n5. 遗嘱消息\n\n   \u003e 设备掉线时候触发\n6. 客户端认证\n    - 支持spi注入外部认证\n7. tls加密\n    - 支持tls加密（mqtt端口/http端口）\n8. websocket协议支持x\n\n   \u003e 使用mqtt over websocket\n9. http协议交互\n    - 支持http接口推送消息\n    - 支持spi扩展http接口\n10. SPI接口扩展支持\n    - 消息管理接口（会话消息/保留消息管理）\n    - 通道管理接口 (管理系统的客户端连接)\n    - ~~认证接口 （用于自定义外部认证）~~\n    - 拦截器 （用户自定义拦截消息）\n11. 集群支持（gossip协议实现）\n12. 容器化支持\n\n    \u003e 默认镜像最新tag: 1ssqq1lxr/smqtt\n13. 持久化支持（session 保留消息）\n14. 规则引擎支持\n15. 支持springboot starter启动\n16. 管理后台\n\n    \u003e 请参考smqtt文档如何启动管理后台\n17. grafana监控集成\n    - 支持influxdb\n    - 支持prometheus\n18. ACL权限管理\n    - 对设备、资访问授权\n19. 认证模块\n    - 支持http\n    - 支持匿名\n    - 支持固定密码\n    - 支持sql\n\n## 尝试一下\n\n\u003e 大家不要恶意链接，谢谢！\n\n| 管理                                     | 说明  | 其他  |\n|----------------------------------------| ----  |----  |\n| 121.40.92.152:1883                     | mqtt端口 |用户名：smqtt 密码：smqtt |\n| 121.40.92.152:18888                    | mqtt over websocket |用户名：smqtt 密码：smqtt  |\n| http://121.40.92.152:60000/smqtt/admin | 管理后台 |用户名：smqtt 密码：smqtt  |\n\n\n## 启动方式\n\n### main方式启动\n\n引入依赖\n\n```markdown\n\u003c!--smqtt依赖 --\u003e\n\u003cdependency\u003e\n  \u003cgroupId\u003eio.github.quickmsg\u003c/groupId\u003e\n  \u003cartifactId\u003esmqtt-core\u003c/artifactId\u003e\n  \u003cversion\u003e${Latest version}\u003c/version\u003e\n\u003c/dependency\u003e\n\u003c!--集群依赖 --\u003e\n\u003cdependency\u003e\n   \u003cartifactId\u003esmqtt-registry-scube\u003c/artifactId\u003e\n   \u003cgroupId\u003eio.github.quickmsg\u003c/groupId\u003e\n   \u003cversion\u003e${Latest version}\u003c/version\u003e\n\u003c/dependency\u003e\n\u003c!--管理ui依赖 --\u003e\n\u003cdependency\u003e\n   \u003cartifactId\u003esmqtt-ui\u003c/artifactId\u003e\n   \u003cgroupId\u003eio.github.quickmsg\u003c/groupId\u003e\n   \u003cversion\u003e${Latest version}\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n- 阻塞式启动服务：\n\n```markdown\n        Bootstrap.builder()\n                .rootLevel(Level.INFO)\n                .websocketConfig(\n                        BootstrapConfig.WebsocketConfig\n                                .builder()\n                                .enable(false)\n                                .path(\"/mqtt\")\n                                .port(8888)\n                                .build()\n                )\n                .tcpConfig(\n                        BootstrapConfig\n                                .TcpConfig\n                                .builder()\n                                .port(1883)\n                                .ssl(SslContext.builder().enable(false).build())\n                                .build())\n                .httpConfig(\n                        BootstrapConfig\n                                .HttpConfig\n                                .builder()\n                                .enable(false)\n                                .accessLog(true)\n                                .admin(BootstrapConfig.HttpAdmin.builder().enable(true).username(\"smqtt\").password(\"smqtt\").build())\n                                .build())\n                .clusterConfig(\n                        BootstrapConfig.\n                                ClusterConfig\n                                .builder()\n                                .enable(false)\n                                .namespace(\"smqtt\")\n                                .node(\"node-1\")\n                                .port(7773)\n                                .url(\"127.0.0.1:7771,127.0.0.1:7772\").\n                                build())\n                .build()\n                .startAwait();\n```\n\n- 非阻塞式启动服务：\n\n```markdown\n    Bootstrap bootstrap = Bootstrap.builder()\n                .rootLevel(Level.INFO)\n                .websocketConfig(\n                        BootstrapConfig.WebsocketConfig\n                                .builder()\n                                .enable(false)\n                                .path(\"/mqtt\")\n                                .port(8888)\n                                .build()\n                )\n                .tcpConfig(\n                        BootstrapConfig\n                                .TcpConfig\n                                .builder()\n                                .port(1883)\n                                .ssl(SslContext.builder().enable(false).build())\n                                .build())\n                .httpConfig(\n                        BootstrapConfig\n                                .HttpConfig\n                                .builder()\n                                .enable(false)\n                                .accessLog(true)\n                                .admin(BootstrapConfig.HttpAdmin.builder().enable(true).username(\"smqtt\").password(\"smqtt\").build())\n                                .build())\n                .clusterConfig(\n                        BootstrapConfig.\n                                ClusterConfig\n                                .builder()\n                                .enable(false)\n                                .namespace(\"smqtt\")\n                                .node(\"node-1\")\n                                .port(7773)\n                                .url(\"127.0.0.1:7771,127.0.0.1:7772\").\n                                build())\n                .build()\n                .start().block();\n```\n\n### jar方式\n\n1. 下载源码 mvn compile package -Dmaven.test.skip=true -P jar,web\n\n```markdown\n  在smqtt-bootstrap/target目录下生成jar\n```\n\n2. 准备配置文件 config.yaml\n\n   [config.yaml](config/config.yaml)\n\n3. 启动服务\n\n```markdown\n  java -jar smqtt-bootstrap-1.0.1-SNAPSHOT.jar \u003cconfig.yaml路径\u003e\n```\n\n### docker 方式\n\n拉取镜像\n\n``` \n# 拉取docker镜像地址\ndocker pull 1ssqq1lxr/smqtt:latest\n```\n\n启动镜像默认配置\n\n``` \n# 启动服务\ndocker run -it  -p 1883:1883 1ssqq1lxr/smqtt\n```\n\n启动镜像使用自定义配置（同上准备配置文件config.yaml）\n\n``` \n# 启动服务\ndocker run -it  -v \u003c配置文件路径目录\u003e:/conf -p 1883:1883  -p 1999:1999 1ssqq1lxr/smqtt\n```\n\n### springboot方式\n\n1. 引入依赖\n\n    ```markdown\n    \u003cdependency\u003e\n        \u003cgroupId\u003eio.github.quickmsg\u003c/groupId\u003e\n        \u003cartifactId\u003esmqtt-spring-boot-starter\u003c/artifactId\u003e\n        \u003cversion\u003e${Latest version \u003e= 1.0.8}\u003c/version\u003e\n    \u003c/dependency\u003e\n    ```\n\n2. 启动类Application上添加注解 `  @EnableMqttServer`\n\n3. 配置application.yml文件\n   \u003e properties也支持，但是需要自己转换，没有提供demo文件\n\n   [config.yaml](config/config.yaml)\n\n4. 启动springboot服务服务即可\n5. 如果引入的是spring-boot-starter-parent的管理包，如果启动报错，则需要添加以下依赖\n\n```xml\n\n\u003cdependency\u003e\n    \u003cgroupId\u003eio.projectreactor\u003c/groupId\u003e\n    \u003cartifactId\u003ereactor-core\u003c/artifactId\u003e\n    \u003cversion\u003e3.4.9\u003c/version\u003e\n\u003c/dependency\u003e\n\u003cdependency\u003e\n\u003cgroupId\u003eio.projectreactor.netty\u003c/groupId\u003e\n\u003cartifactId\u003ereactor-netty\u003c/artifactId\u003e\n\u003cversion\u003e1.0.10\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n## 官网地址\n\n[smqtt官网](https://www.smqtt.cc/)\n\n## wiki地址\n\n[wiki地址](https://wiki.smqtt.cc/)\n\n## 管理后台\n\n![image](icon/admin.png)\n\n## 监控页面\n\n### Mqtt监控\n\n![image](icon/application.png)\n\n### Jvm监控\n\n![image](icon/jvm.png)\n\n### Netty监控\n\n![image](icon/netty.png)\n\n\n## License\n\n[Apache License, Version 2.0](LICENSE)\n\n## 商业版本\n[商业版演示地址](http://114.116.14.30)\n\n## 友情链接\n\n一款非常好用的IOT平台 thinglinks：\n\n- [Github](https://github.com/mqttsnet/thinglinks)\n- [Gitee](https://gitee.com/mqttsnet/thinglinks)\n\n## 相关技术文档\n\n- [reactor3](https://projectreactor.io/docs/core/release/reference/)\n- [reactor-netty](https://projectreactor.io/docs/netty/1.0.12/reference/index.html)\n\n## 麻烦关注下公众号！\n\n![image](icon/icon.jpg)\n\n- 添加微信号`Lemon877164954`，拉入smqtt官方交流群\n- 加入qq群 `700152283` \n\n","funding_links":[],"categories":["Java"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquickmsg%2Fsmqtt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquickmsg%2Fsmqtt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquickmsg%2Fsmqtt/lists"}