Skip to main content
Version: 1.0.0 (development)

Repository and module map

Use this map to find the owner of a behavior before editing it. Cargo packages, operating-system processes and products are different units: one Broker process composes several libraries, while a Dashboard product may contain separate Rust and Node projects.

Workspace membership and release scope

The current root Cargo.toml lists 28 workspace members. scripts/core-release-scope.json lists 27 core packages. The difference is rocketmq-dashboard-common, which belongs to the root workspace but is outside that core-release package list.

Workspace membership selects Cargo's build graph. Core-release classification describes packaging intent such as registry publication, binary-only or internal use. Neither count proves that all packages have already been published at the source version.

Folder and package names can differ. The rocketmq-client directory contains package rocketmq-client-rust; use the package name in cargo -p commands. The rocketmq-dashboard directory is not itself a Cargo workspace.

Root members by responsibility

Paths relative to the repositoryResponsibilityBoundary to preserve
rocketmq-model, rocketmq-errorDomain values and canonical operational errorsMessage identities, serialization and error identity
rocketmq-security-apiShared security contractsSecurity types without silently selecting a policy implementation
rocketmq-protocol, rocketmq-macrosWire commands/codecs and generated typed-header supportRequest codes, headers and serialization
rocketmq-transportClient/server connections, dispatch, admission and file transferBounded network work and completion meaning
rocketmq-runtimeRuntime ownership, task scopes, blocking and resource budgetsCancellation, admission and shutdown evidence
rocketmq-observabilityLogs, metrics, tracing and exporter ownershipBounded diagnostics and redaction
rocketmq-auth, rocketmq-filterAuthentication/authorization implementations and filteringRuntime permissions and supported expressions
rocketmq-clientProducer, consumer and optional Admin facadesApplication-owned ClientRuntime and API compatibility
rocketmq-namesrvBroker registration and route lookupDiscovery state and advertised addresses
rocketmq-brokerMessage processors and service compositionBroker/store lifecycle and request outcomes
rocketmq-store-apiBackend-neutral storage contractsReceipts, durability, progress and HA decisions
rocketmq-storeBroker-facing StoreFactory/StorePorts compositionExclusive lifecycle ownership and narrow capabilities
rocketmq-store-local, rocketmq-store-rocksdb, rocketmq-tieredstoreLocal storage primitives, optional RocksDB metadata and tiered integrationPrimary-log authority versus derived/secondary progress
rocketmq-controllerController metadata, OpenRaft and Broker-role coordinationWrite authority, epochs and replica membership
rocketmq-proxy, rocketmq-proxy-core, rocketmq-proxy-cluster, rocketmq-proxy-localProxy ingress, common contracts and remote/embedded adaptersMode-specific backend and runtime ownership
rocketmq-tools/rocketmq-admin/rocketmq-admin-coreReusable typed administration servicesRead/mutation adapter selection
rocketmq-tools/rocketmq-admin/rocketmq-admin-cli, rocketmq-admin-tui under the same parentCommand-line and terminal administrationTool invocation and operator-facing errors
rocketmq-tools/rocketmq-store-inspectExplicit storage inspection operationsOffline access and data-format scope
rocketmq-dashboard/rocketmq-dashboard-commonShared Dashboard domain models and logicShared library, not the UI or backend executable

These rows group related members; they are not a claim that all grouped crates share the same features or release classification.

How the libraries fit together

This is a selected dependency view, not an exhaustive Cargo graph. Security and observability are cross-cutting dependencies. The important distinction is that wire types do not own sockets, and storage contracts do not select a runtime or concrete database.

For exact active dependencies, run from the root:

cargo metadata --no-deps --format-version 1
cargo tree -p rocketmq-client-rust -e features

The feature tree describes that invocation's graph. Optional dependencies, defaults and feature unification can make another consumer's graph differ. For example, the root transport dependency disables defaults, while a direct package build can enable package defaults.

Standalone projects

Project rootStructureStart here
rocketmq-exampleStandalone Cargo examplesIts manifest and example targets
rocketmq-websiteDocusaurus Node projectpackage.json and website authoring guide
rocketmq-website/examples/first-messageSmall standalone Cargo tutorialIts manifest with checkout-relative dependencies
rocketmq-dashboard/rocketmq-dashboard-gpuiNative Rust desktop appLocal manifest and platform prerequisites
rocketmq-dashboard/rocketmq-dashboard-tauriNode frontend plus src-tauri Rust backendTauri commands from the frontend project root
rocketmq-dashboard/rocketmq-dashboard-webSeparate frontend Node and backend Cargo projectsWeb Dashboard setup guide
rocketmq-ai/rocketmq-mcpStandalone read-only MCP packageIts transport features and configuration
rocketmq-ai/rocketmq-mcp-controlStandalone controlled-mutation packageSeparate policy and build enablement
rocketmq-ai/rocketmq-sreStandalone Rust 2024 workspace, plus UI and SDK projectsSRE workspace and deployment guides
fuzz and macro test fixturesSpecialized standalone harnessesTheir local instructions and targets

Do not run a root cargo check and interpret it as a check of every standalone product. Similarly, a frontend npm run build does not prove that a Tauri installer or Web backend was built.

Locate a change

  • A wrong request code or encoded header belongs near Protocol and its contract tests.
  • A connection timeout, admission or writer-lifetime issue belongs near Transport and its consumers.
  • A leaked task or shutdown deadline issue belongs at the actual runtime owner, often involving Runtime and the integrating service.
  • A stored message with delayed query visibility belongs in the Store append/dispatch/read path, not automatically in the NameServer.
  • A UI operation may cross frontend, product backend, Admin Core and the core service; inspect those concrete consumers.

Public exports are deliberate. Prefer crate-root, api or prelude entry points documented by the owner instead of importing a private implementation module because its file exists.

Continue with message lifecycle for the request path and developer guide for working directories and focused checks.

Sources: workspace members, core release scope, Protocol, Transport, Store API.