Skip to main content
Version: 1.0.0 (development)

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.

  1. Read installation to select the source toolchain and build targets.
  2. Follow local source setup to start the Rust services with explicit addresses and data directories.
  3. Complete the first-message tutorial to create a Topic and Consumer Group, send, poll, and commit consumption progress.
  4. Read delivery and retry before treating a successful send or commit as a business transaction guarantee.

What the components do​

ComponentResponsibilityWhen you need it
NameServerBroker registration, liveness, and topic-route lookupThe ordinary client discovery path
BrokerRequest processing, topic/group metadata, message storage and deliveryEvery message path
Rust clientProducer, Push/LitePull/POP consumption, and optional administrationRust applications accessing the cluster
ProxyProtocol ingress with cluster or embedded-local backend adaptationA deployment that needs those ingress modes
ControllerRust controller coordination for a selected HA topologyController-managed replication
Admin CLI and storage inspectionCluster administration and explicit offline operationsDevelopment, diagnosis, and maintenance
DashboardsWeb or native interfaces around cluster operationsInteractive administration
MCP, MCP Control, SRERead-only diagnostics, separate controlled changes, and SRE workflowsOptional 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.

Source references​