无需垃圾回收的内存安全
所有权与借用机制在编译期排除数据竞争与释放后使用。没有 GC,消息链路上也就没有 Stop-The-World 停顿。
RocketMQ-Rust 是由社区构建的 Apache RocketMQ Rust 实现:NameServer、Broker、Proxy、Controller 与异步客户端一应俱全,内存安全、全程非阻塞,并支持 RocketMQ Remoting 与 gRPC 协议。
原生支持 顺序消息, 延迟消息, 事务消息, 批量消息, 请求-应答消息
cargo add rocketmq-client-rust路由发现、发送、持久化、复制与投递:RocketMQ 模型的每一跳,都以异步 Rust 实现。
你熟悉的 RocketMQ 模型,用一门能把整类运行时故障变成编译错误的语言重新构建。
所有权与借用机制在编译期排除数据竞争与释放后使用。没有 GC,消息链路上也就没有 Stop-The-World 停顿。
基于 Tokio 构建。网络、请求处理与后台服务均为非阻塞,运行时归属明确,关闭过程有序。
实现了 Remoting 协议与 gRPC 消息 API,Rust 与 Java 的客户端和服务端可在文档明确的边界内互通。
追加写入的 CommitLog 搭配 ConsumeQueue 与索引文件,另有 RocksDB 后端,以及突破本地磁盘容量的分层存储。
支持顺序、延迟、事务、批量与请求-应答消息,可通过 Push、LitePull 或 POP 消费。
基于 Raft 的 Controller 负责协调各 Broker 组的主节点选举与同步副本。
认证、ACL 授权与 TLS 共同守护客户端与管理端的访问。
提供 Prometheus 指标,以及基于 OTLP 的 OpenTelemetry 链路与日志,通过可选的构建特性按需启用。
Builder、带类型的返回值与显式的生命周期。没有隐藏线程,也没有意外。
use std::error::Error;use std::sync::Arc; use rocketmq_client_rust::{ClientRuntime, DefaultMQProducer};use rocketmq_model::common::message::message_single::Message; async fn produce(client: Arc<ClientRuntime>) -> Result<(), Box<dyn Error>> { let mut producer = DefaultMQProducer::builder(client) .producer_group("order_producer") .name_server_addr("127.0.0.1:9876") .build(); producer.start().await?; let message = Message::builder() .topic("OrderTopic") .tags("created") .body("order-1024") .build()?; if let Some(sent) = producer.send_with_timeout(message, 3_000).await? { println!("{} at offset {}", sent.send_status, sent.queue_offset); } producer.shutdown().await; Ok(())}
服务、类库与运维工具在同一个仓库中协同演进。
获取工作区源码,使用固定的 Rust 1.95 工具链完成构建。
git clone https://github.com/mxsm/rocketmq-rust.gitcd rocketmq-rustcargo build --workspace
Broker 与客户端的路由注册中心,默认 监听 127.0.0.1:9876。
cargo run --bin rocketmq-namesrv-rust为 Broker 指定存放数据的主目录,并让它连接 NameServer。
export ROCKETMQ_HOME="$(pwd)/.rocketmq"mkdir -p "$ROCKETMQ_HOME/conf"cargo run --bin rocketmq-broker-rust -- -n 127.0.0.1:9876
先启动消费者,再在另一个终端中运行生产者。
cargo run -p rocketmq-client-rust --example consumercargo run -p rocketmq-client-rust --example producer
RocketMQ-Rust 在开源社区中公开演进。欢迎为仓库点亮 Star、参与讨论,或者认领一个 good first issue。
浏览 good first issueRocketMQ-Rust 是独立的社区项目,并非 Apache 软件基金会的官方发行版。Apache RocketMQ 是 Apache 软件基金会的商标。