Introduction to RocketMQ-Rust
RocketMQ-Rust implements message services and client APIs in Rust. Applications publish messages to Brokers, discover routes through NameServers, and consume messages using a model suited to their processing needs. The repository also contains Proxy and Controller services, storage implementations, administration tools, dashboards, and AI operations products.
This documentation is maintained for the RocketMQ-Rust project. The repository's distribution identity is an independent community distribution, not an official Apache Software Foundation release. Compatibility with Apache RocketMQ is described at particular protocol and behavior boundaries, rather than as a claim that every upstream component is interchangeable.
Start with one complete message path
For a first local system, use one NameServer, one Broker with local file storage, and a Rust Producer/LitePull Consumer. Controller, Proxy, dashboards, and AI services are optional additions. They are not prerequisites for sending your first message.
- Read installation to select the source toolchain and build targets.
- Follow local source setup to start the Rust services with explicit addresses and data directories.
- Complete the first-message tutorial to create a Topic and Consumer Group, send, poll, and commit consumption progress.
- Read delivery and retry before treating a successful send or commit as a business transaction guarantee.
What the components do
| Component | Responsibility | When you need it |
|---|---|---|
| NameServer | Broker registration, liveness, and topic-route lookup | The ordinary client discovery path |
| Broker | Request processing, topic/group metadata, message storage and delivery | Every message path |
| Rust client | Producer, Push/LitePull/POP consumption, and optional administration | Rust applications accessing the cluster |
| Proxy | Protocol ingress with cluster or embedded-local backend adaptation | A deployment that needs those ingress modes |
| Controller | Rust controller coordination for a selected HA topology | Controller-managed replication |
| Admin CLI and storage inspection | Cluster administration and explicit offline operations | Development, diagnosis, and maintenance |
| Dashboards | Web or native interfaces around cluster operations | Interactive administration |
| MCP, MCP Control, SRE | Read-only diagnostics, separate controlled changes, and SRE workflows | Optional operations products with their own boundaries |
The system is modular at the library level as well. Message domain types belong to Model, wire types to Protocol, networking to Transport, background-work ownership to Runtime, and storage contracts to Store API. A crate is not necessarily a separate process. See architecture overview for the relationship between modules and running components.
Version and capability scope
These 1.0.0 development pages describe the current source tree. The root package version is 1.0.0 and its toolchain is Rust 1.95.0. Neither value proves that an identically numbered downloadable artifact has been published. Use GitHub releases for release-specific artifacts, and keep the corresponding release's configuration and APIs together.
The capability matrix separates implementation from build features, runtime configuration, and deployment limits. An available request handler does not establish that every storage backend or topology supports the same behavior.
Choose a consumption model
Start with LitePull when your application wants an explicit polling loop and progress commits. Use Push consumption when you want the client to dispatch messages to application listeners. Push describes the application-facing callback model; its implementation includes client-side pulling and long polling. POP uses receipts and acknowledgement semantics that must be understood separately from offset-based consumption.
For an existing Classic Pull application, consult the current API's compatibility behavior before migrating. The compatibility facade is deprecated, but a runtime-backed builder path exists; detached construction does not provide an initialized running consumer.