{"id":13603498,"url":"https://github.com/rmqtt/rmqtt","last_synced_at":"2026-05-02T06:03:59.947Z","repository":{"id":39981396,"uuid":"346080029","full_name":"rmqtt/rmqtt","owner":"rmqtt","description":"MQTT Server/MQTT Broker - Scalable Distributed MQTT Message Broker for IoT in the 5G Era","archived":false,"fork":false,"pushed_at":"2025-07-21T09:10:53.000Z","size":10826,"stargazers_count":722,"open_issues_count":15,"forks_count":91,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-07-24T06:17:21.912Z","etag":null,"topics":["5g","broker","cluster-server","ecosystem","hivemq","iot","iot-broker","iot-middleware","iot-server","message-broker","message-bus","message-queue","messaging","mqtt","publisher","pubsub","rust","subscriber","tokio"],"latest_commit_sha":null,"homepage":"https://deepwiki.com/rmqtt/rmqtt","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rmqtt.png","metadata":{"files":{"readme":"README-CN.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-03-09T16:59:37.000Z","updated_at":"2025-07-23T02:01:09.000Z","dependencies_parsed_at":"2023-02-01T02:00:37.843Z","dependency_job_id":"b5318378-7882-4986-97b3-16c55aa8044b","html_url":"https://github.com/rmqtt/rmqtt","commit_stats":null,"previous_names":[],"tags_count":51,"template":false,"template_full_name":null,"purl":"pkg:github/rmqtt/rmqtt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmqtt%2Frmqtt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmqtt%2Frmqtt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmqtt%2Frmqtt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmqtt%2Frmqtt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rmqtt","download_url":"https://codeload.github.com/rmqtt/rmqtt/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmqtt%2Frmqtt/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266990014,"owners_count":24017713,"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","status":"online","status_checked_at":"2025-07-25T02:00:09.625Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["5g","broker","cluster-server","ecosystem","hivemq","iot","iot-broker","iot-middleware","iot-server","message-broker","message-bus","message-queue","messaging","mqtt","publisher","pubsub","rust","subscriber","tokio"],"created_at":"2024-08-01T19:00:23.562Z","updated_at":"2026-05-02T06:03:59.941Z","avatar_url":"https://github.com/rmqtt.png","language":"Rust","funding_links":[],"categories":["Tokio Projects","Rust","Libraries","Applications"],"sub_categories":["Socials","Network programming","Message Queue"],"readme":"# RMQTT Broker\r\n\r\n[![GitHub Release](https://img.shields.io/github/release/rmqtt/rmqtt?color=brightgreen)](https://github.com/rmqtt/rmqtt/releases)\r\n\u003ca href=\"https://blog.rust-lang.org/2025/08/07/Rust-1.89.0/\"\u003e\u003cimg alt=\"Rust Version\" src=\"https://img.shields.io/badge/rust-1.89.0%2B-blue\" /\u003e\u003c/a\u003e\r\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/rmqtt/rmqtt)\r\n[![crates.io page](https://img.shields.io/crates/v/rmqtt.svg)](https://crates.io/crates/rmqtt)\r\n[![docs.rs page](https://docs.rs/rmqtt/badge.svg)](https://docs.rs/rmqtt/latest/rmqtt/)\r\n\r\n[English](./README.md)  | 简体中文\r\n\r\n*RMQTT* 是一款完全开源，高度可伸缩，高可用的分布式 MQTT 消息服务器，适用于 IoT、M2M 和移动应用程序，可以在单个服务节点上处理百万级别的并发客户端。\r\n\r\n## 功能特色\r\n\r\n- 100% Rust安全编码;\r\n- 基于 [tokio](https://crates.io/crates/tokio) 开发;\r\n- [支持MQTT v3.1,v3.1.1 及 v5.0协议](./docs/zh_CN/mqtt-protocol.md);\r\n    - [QoS0, QoS1, QoS2 消息支持](./docs/zh_CN/mqtt-protocol.md#41-qos-说明);\r\n    - [离线消息支持](./docs/zh_CN/offline-message.md);\r\n    - [Retained 消息支持](./docs/zh_CN/retainer.md);\r\n    - [Last Will 消息支持](./docs/zh_CN/mqtt-protocol.md#6-保留消息与遗嘱消息);\r\n- [分布式集群](./docs/zh_CN/cluster-raft.md);\r\n- [内置 AUTH/ACL](./docs/zh_CN/acl.md);\r\n- [HTTP AUTH/ACL](./docs/zh_CN/auth-http.md);\r\n- [JWT AUTH/ACL](./docs/zh_CN/auth-jwt.md);\r\n- [WebHook](./docs/zh_CN/web-hook.md);\r\n- [HTTP APIs](./docs/zh_CN/http-api.md);\r\n- [$SYS 系统主题](./docs/zh_CN/sys-topic.md);\r\n- [存储会话信息](./docs/zh_CN/store-session.md);\r\n- [存储未过期消息](./docs/zh_CN/store-message.md);\r\n- [MQTT桥接-入口模式](./docs/zh_CN/bridge-ingress-mqtt.md);\r\n- [MQTT桥接-出口模式](./docs/zh_CN/bridge-egress-mqtt.md);\r\n- [Apache Kafka桥接-入口模式](./docs/zh_CN/bridge-ingress-kafka.md);\r\n- [Apache kafka桥接-出口模式](./docs/zh_CN/bridge-egress-kafka.md);\r\n- [Apache Pulsar桥接-入口模式](./docs/zh_CN/bridge-ingress-pulsar.md);\r\n- [Apache Pulsar桥接-出口模式](./docs/zh_CN/bridge-egress-pulsar.md);\r\n- [NATS桥接-入口模式](./docs/zh_CN/bridge-ingress-nats.md);\r\n- [NATS桥接-出口模式](./docs/zh_CN/bridge-egress-nats.md);\r\n- [Reductstore桥接-出口模式](./docs/zh_CN/bridge-egress-reductstore.md);\r\n- [主题重写](./docs/zh_CN/topic-rewrite.md);\r\n- [自动订阅](./docs/zh_CN/auto-subscription.md);\r\n- [P2P 消息传递](./docs/zh_CN/p2p-messaging.md);\r\n- 共享订阅($share/{Group}/{TopicFilter});\r\n- 排它订阅($exclusive/{TopicFilter});\r\n- 限制订阅($limit/{LimitQuantity}/{TopicFilter});\r\n- 延迟发布($delayed/{DelayInterval}/{TopicName});\r\n- 钩子(Hooks);\r\n- TLS支持;\r\n- WebSocket支持;\r\n- WebSocket-TLS支持;\r\n- MQTT over QUIC支持;\r\n- 内置可扩展功能;\r\n- 支持扩展插件;\r\n- 指标监控;\r\n- 速率限制;\r\n- 飞行窗口和消息队列;\r\n- 消息重传;\r\n\r\n- 新功能的完整列表，请参阅 [RMQTT Release Notes](https://github.com/rmqtt/rmqtt/releases) 。\r\n\r\n## 安装\r\n\r\n*RMQTT* 是跨平台的，支持 Linux、Unix、macOS 以及 Windows。这意味着 *RMQTT* 可以部署在 x86_64 架构的服务器上，也可以部署在 Raspberry Pi 这样的 ARM 设备上。\r\n\r\n#### 使用 Docker 运行 RMQTT\r\n\r\n* 单节点\r\n\r\n```bash\r\nmkdir -p /app/log/rmqtt\r\ndocker run -d --name rmqtt -p 1883:1883 -p 8883:8883 -p 11883:11883 -p 6060:6060 -v /app/log/rmqtt:/var/log/rmqtt  rmqtt/rmqtt:latest\r\n```\r\n\r\n* 多节点\r\n\r\n```bash\r\n  docker run -d --name rmqtt1 -p 1884:1883 -p 8884:8883 -p 11884:11883 -p 6064:6060 -v /app/log/rmqtt/1:/var/log/rmqtt  rmqtt/rmqtt:latest --id 1 --plugins-default-startups \"rmqtt-cluster-raft\" --node-grpc-addrs \"1@172.17.0.3:5363\" \"2@172.17.0.4:5363\" \"3@172.17.0.5:5363\" --raft-peer-addrs \"1@172.17.0.3:6003\" \"2@172.17.0.4:6003\" \"3@172.17.0.5:6003\"   \r\n\r\n  docker run -d --name rmqtt2 -p 1885:1883 -p 8885:8883 -p 11885:11883 -p 6065:6060 -v /app/log/rmqtt/2:/var/log/rmqtt  rmqtt/rmqtt:latest --id 2 --plugins-default-startups \"rmqtt-cluster-raft\" --node-grpc-addrs \"1@172.17.0.3:5363\" \"2@172.17.0.4:5363\" \"3@172.17.0.5:5363\" --raft-peer-addrs \"1@172.17.0.3:6003\" \"2@172.17.0.4:6003\" \"3@172.17.0.5:6003\"   \r\n\r\n  docker run -d --name rmqtt3 -p 1886:1883 -p 8886:8883 -p 11886:11883 -p 6066:6060 -v /app/log/rmqtt/3:/var/log/rmqtt  rmqtt/rmqtt:latest --id 3 --plugins-default-startups \"rmqtt-cluster-raft\" --node-grpc-addrs \"1@172.17.0.3:5363\" \"2@172.17.0.4:5363\" \"3@172.17.0.5:5363\" --raft-peer-addrs \"1@172.17.0.3:6003\" \"2@172.17.0.4:6003\" \"3@172.17.0.5:6003\"\r\n```\r\n\r\n节点IDs: 1, 2, 3; 节点IP Addrs: 172.17.0.3, 172.17.0.4, 172.17.0.5\r\n\r\n#### 通过 docker-compose 创建静态集群\r\n\r\n1. [下载配置模板](https://github.com/rmqtt/templates/blob/main/docker-compose-template/docker-compose-template-v0.7.zip)\r\n\r\n2. 启动 docker-compose 集群\r\n\r\n```bash\r\ndocker-compose up -d\r\n```\r\n\r\n3. 查看集群\r\n\r\n```bash\r\ncurl \"http://127.0.0.1:6066/api/v1/health/check\"\r\n```\r\n\r\n#### ZIP 压缩包安装 (Linux、MacOS、Windows)\r\n\r\n需从 [GitHub Release](https://github.com/rmqtt/rmqtt/releases) 页面获取相应操作系统的ZIP压缩包。\r\n\r\n- [单节点安装配置文档](./docs/zh_CN/install.md)\r\n\r\n- [集群安装配置文档](./docs/zh_CN/install.md)\r\n\r\n\r\n##  通过库方式集成\r\n\r\n除了作为独立的 MQTT Broker/Server 使用外，rmqtt 还提供 **库模式（Library Mode）**，可以将 rmqtt 作为 Rust 的依赖直接嵌入到你的应用或服务中。只需在 `Cargo.toml` 中添加如下依赖，即可在代码中像使用普通库一样调用 rmqtt 的 API：\r\n\r\n```toml\r\n[dependencies]\r\nrmqtt = \"0.18\"\r\n```\r\n\r\n更多关于库模式的使用说明，请参考 [RMQTT 库使用文档](./rmqtt/README.md) 。\r\n\r\n## 体验\r\n\r\n[//]: # (- MQTT Broker：47.103.110.134:1883)\r\n\r\n[//]: # (- Account: 无)\r\n\r\n[//]: # (- HTTP APIs: http://47.103.110.134:6080/api/v1/)\r\n\r\n## 测试\r\n\r\n### 功能测试\r\n\r\n#### paho.mqtt.testing(MQTT V3.1.1) [client_test.py](https://github.com/eclipse/paho.mqtt.testing/blob/master/interoperability/client_test.py)\r\n\r\n* client_test.py Test.test_retained_messages          [OK]\r\n* client_test.py Test.test_zero_length_clientid       [OK]\r\n* client_test.py Test.will_message_test               [OK]\r\n* client_test.py Test.test_zero_length_clientid       [OK]\r\n* client_test.py Test.test_offline_message_queueing   [OK]\r\n* client_test.py Test.test_overlapping_subscriptions  [OK]\r\n* client_test.py Test.test_keepalive                  [OK]\r\n* client_test.py Test.test_redelivery_on_reconnect    [OK]\r\n* client_test.py Test.test_dollar_topics              [OK]\r\n* client_test.py Test.test_unsubscribe                [OK]\r\n* client_test.py Test.test_subscribe_failure          [OK]  \r\n  * 需要修改rmqtt-acl.toml配置，在第一行添加：[\"deny\", \"all\", \"subscribe\", [\"test/nosubscribe\"]]\r\n\r\n#### paho.mqtt.testing(MQTT V5.0) [client_test5.py](https://github.com/eclipse/paho.mqtt.testing/blob/master/interoperability/client_test5.py)\r\n\r\n* client_test5.py Test.test_retained_message            [OK]\r\n* client_test5.py Test.test_will_message                [OK]\r\n* client_test5.py Test.test_offline_message_queueing    [OK]\r\n* client_test5.py Test.test_dollar_topics               [OK]\r\n* client_test5.py Test.test_unsubscribe                 [OK]\r\n* client_test5.py Test.test_session_expiry              [OK]\r\n* client_test5.py Test.test_shared_subscriptions        [OK]\r\n* client_test5.py Test.test_basic                       [OK]\r\n* client_test5.py Test.test_overlapping_subscriptions   [OK]\r\n* client_test5.py Test.test_redelivery_on_reconnect     [OK]\r\n* client_test5.py Test.test_payload_format              [OK]\r\n* client_test5.py Test.test_publication_expiry          [OK]\r\n* client_test5.py Test.test_subscribe_options           [OK]\r\n* client_test5.py Test.test_assigned_clientid           [OK]\r\n* client_test5.py Test.test_subscribe_identifiers       [OK]\r\n* client_test5.py Test.test_request_response            [OK]\r\n* client_test5.py Test.test_server_topic_alias          [OK]\r\n* client_test5.py Test.test_client_topic_alias          [OK]\r\n* client_test5.py Test.test_maximum_packet_size         [OK]\r\n* client_test5.py Test.test_keepalive                   [OK]\r\n* client_test5.py Test.test_zero_length_clientid        [OK]\r\n* client_test5.py Test.test_user_properties             [OK]\r\n* client_test5.py Test.test_flow_control2               [OK]\r\n* client_test5.py Test.test_flow_control1               [OK]\r\n* client_test5.py Test.test_will_delay                  [OK]\r\n* client_test5.py Test.test_server_keep_alive           [OK]\r\n  * 需要修改rmqtt.toml配置，将max_keepalive改为60\r\n* client_test5.py Test.test_subscribe_failure           [OK]\r\n  * 需要修改rmqtt-acl.toml配置，在第一行添加：[\"deny\", \"all\", \"subscribe\", [\"test/nosubscribe\"]]\r\n\r\n\r\n### 基准测试\r\n\r\n#### 环境\r\n| 项目          | 内容                                        |                                                                 |\r\n|-------------|-------------------------------------------|-----------------------------------------------------------------|\r\n| 操作系统        | x86_64 GNU/Linux                          | Rocky Linux 9.2 (Blue Onyx)                                     |\r\n| CPU         | Intel(R) Xeon(R) CPU E5-2696 v3 @ 2.30GHz | 72(CPU(s)) = 18(Core(s)) * 2(Thread(s) per core) * 2(Socket(s)) |\r\n| 内存          | DDR3/2333                                 | 128G                                                            |\r\n| 磁盘          |                                           | 2T                                                              |\r\n| 容器          | podman                                    | v4.4.1                                                          |\r\n| 测试客户端       | docker.io/rmqtt/rmqtt-bench:latest        | v0.1.3                                                          |\r\n| MQTT Broker | docker.io/rmqtt/rmqtt:latest              | v0.3.0                                                          |\r\n| 其它          | 测试客户端和MQTT Broker同服         |                                                                 |\r\n\r\n#### 连接并发性能\r\n| 项目                | 单机              | Raft集群模式       |\r\n|-------------------|-----------------|----------------|\r\n| 并发客户端总数       | 100万            | 100万           |\r\n| 连接握手速率        | (5500-7000)/秒   | (5000-7000)/秒  |\r\n\r\n#### 消息吞吐性能\r\n| 项目               | 单机                | Raft集群模式             |\r\n|---------------------|------------------|----------------|\r\n| 订阅客户端数量             | 100万             |   100万       |\r\n| 发布客户端数量             | 40               |    40       |\r\n| 消息吞吐速率              | 15万/秒            |   15.6万/秒   |\r\n\r\n[基准测试详细内容，请参阅](./docs/zh_CN/benchmark-testing.md)\r\n\r\n## ⭐ Star History\r\n[![Star History Chart](https://api.star-history.com/svg?repos=rmqtt/rmqtt\u0026type=Date)](https://star-history.com/#rmqtt/rmqtt\u0026Date)\r\n\r\n---\r\n\r\n## Credits\r\n\r\n- 从 0.15 版本开始，本项目的 MQTT 编解码实现部分参考并借鉴了 ntex-mqtt 的实现。\r\n\r\n- 在 0.13 及之前的版本，本项目依赖了维护的 ntex 和 ntex-mqtt fork 版本作为依赖库。\r\n\r\n\r\n\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frmqtt%2Frmqtt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frmqtt%2Frmqtt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frmqtt%2Frmqtt/lists"}