3 releases (breaking)

0.3.0 Nov 17, 2024
0.2.0 Jun 4, 2024
0.1.0 Jan 27, 2024

#112 in Asynchronous

Download history 2/week @ 2024-08-31 1/week @ 2024-09-14 23/week @ 2024-09-21 31/week @ 2024-09-28 1/week @ 2024-10-05 125/week @ 2024-11-16 28/week @ 2024-11-23 18/week @ 2024-11-30

171 downloads per month
Used in 6 crates (5 directly)

MIT/Apache

46KB
722 lines

rocketmq-rust

GitHub last commit Crates.io Docs.rs CI CodeCov GitHub contributors Crates.io License GitHub repo size Static Badge

Welcome to Apache Rocketmq Rust implementation (Unofficial ). RocketMQ-Rust is a reimplementation of the Apache RocketMQ message middleware in the Rust language. This project aims to provide Rust developers with a high-performance and reliable message queue service, making full use of the features of the Rust language.

RocketMQ-Rust Features

  • Rust Language Advantages: Leveraging the benefits of Rust, such as memory safety, zero-cost abstractions, and high concurrency performance, RocketMQ-Rust offers an efficient and reliable message middleware.
  • Asynchronous and Non-blocking Design: RocketMQ-Rust takes full advantage of Rust's asynchronous programming capabilities, adopting a non-blocking design that supports high-concurrency message processing.
  • Ecosystem Integration: As part of the Rust ecosystem, RocketMQ-Rust integrates well with other libraries and frameworks within the Rust ecosystem, providing flexible integration options for developers.
  • Cross-platform Support: RocketMQ-Rust supports multiple platforms, including Linux, Windows, macOS, making it convenient for use in different environments.

Roadmap

Getting Started

Requirements

  1. rust toolchain MSRV is 1.75.(stable,nightly)

Run name server

Run the following command to see usage:

  • windows platform

    cargo run --bin rocketmq-namesrv-rust -- --help
    
    RocketMQ Name server(Rust)
    
    Usage: rocketmq-namesrv-rust.exe [OPTIONS]
    
    Options:
      -p, --port <PORT>  rocketmq name server port [default: 9876]
      -i, --ip <IP>      rocketmq name server ip [default: 127.0.0.1]
      -h, --help         Print help
      -V, --version      Print version
    
  • Linux platform

    $ cargo run --bin rocketmq-namesrv-rust -- --help
    
    RocketMQ Name server(Rust)
    
    Usage: rocketmq-namesrv-rust [OPTIONS]
    
    Options:
      -p, --port <PORT>  rocketmq name server port [default: 9876]
      -i, --ip <IP>      rocketmq name server ip [default: 127.0.0.1]
      -h, --help         Print help
      -V, --version      Print version
    

Run the following command to start the name server

cargo run --bin rocketmq-namesrv-rust

Run Borker

Run the following command to see usage:

  • windows platform

    cargo run --bin rocketmq-broker-rust -- --help
    
    RocketMQ Broker Server(Rust)
    
    Usage: rocketmq-broker-rust.exe [OPTIONS]
    
    Options:
      -c, --config-file <FILE>      Broker config properties file
      -m, --print-important-config  Print important config item
      -n, --namesrv-addr <IP>       Name server address list, eg: '192.168.0.1:9876;192.168.0.2:9876' [default: 127.0.0.1:9876]
      -p, --print-config-item       Print all config item
      -h, --help                    Print help
      -V, --version                 Print version
    
  • Linux platform

    $ cargo run --bin rocketmq-broker-rust -- --help
    
    RocketMQ Broker Server(Rust)
    
    Usage: rocketmq-broker-rust [OPTIONS]
    
    Options:
      -c, --config-file <FILE>      Broker config properties file
      -m, --print-important-config  Print important config item
      -n, --namesrv-addr <IP>       Name server address list, eg: '192.168.0.1:9876;192.168.0.2:9876' [default: 127.0.0.1:9876]
      -p, --print-config-item       Print all config item
      -h, --help                    Print help
      -V, --version                 Print version
    

Run the following command to start the name server

cargo run --bin rocketmq-broker-rust

Client how to send message

First, start the RocketMQ NameServer and Broker services.

For more examples, you can check here

Modules

The existing RocketMQ has the following functional modules:

The specific functions of each module can be referred to in the official RocketMQ documentation. The Rust implementation will be carried out sequentially in the following order.

Contributing

Contributions to code, issue reporting, and suggestions are welcome. The development of RocketMQ-Rust relies on the support of developers. Let's collaborate to advance Rust in the message middleware domain.

Alt

Stargazers over time

License

RocketMQ-Rust is licensed under the Apache License 2.0 and MIT license

Dependencies

~2.6–8.5MB
~63K SLoC