rocketmq-rust 0.2.0

Unofficial Rust implementation of Apache RocketMQ
Documentation
# rocketmq-rust

![GitHub last commit](https://img.shields.io/github/last-commit/mxsm/rocketmq-rust) [![Crates.io](https://img.shields.io/crates/v/rocketmq-rust.svg)](https://crates.io/crates/rocketmq-rust) [![Docs.rs](https://docs.rs/rocketmq-rust/badge.svg)](https://docs.rs/rocketmq-rust) [![CI](https://github.com/mxsm/rocketmq-rust/workflows/CI/badge.svg)](https://github.com/mxsm/rocketmq-rust/actions) [![CodeCov][codecov-image]][codecov-url] ![GitHub contributors](https://img.shields.io/github/contributors/mxsm/rocketmq-rust) ![Crates.io License](https://img.shields.io/crates/l/rocketmq-rust) ![GitHub repo size](https://img.shields.io/github/repo-size/mxsm/rocketmq-rust) ![Static Badge](https://img.shields.io/badge/MSRV-1.75.0%2B-25b373)

![](resources/rocketmq-rust.jpg)

 Welcome to [Apache Rocketmq](https://github.com/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.

## Getting Started

### Requirements

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

### Run name server

**Run the following command to see usageļ¼š**

- **windows platform**

  ```cmd
  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**

  ```shell
  $ 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

```shell
cargo run --bin rocketmq-namesrv-rust
```

## Modules

The existing RocketMQ has the following functional modules:

- **Name Server**
- **Broker**
- **Store (Local Storage)**
- **Controller (High Availability)**
- **Client (SDK)**
- **Proxy**
- **Tiered Store (Tiered Storage Module)**

The specific functions of each module can be referred to in the [official RocketMQ documentation](https://github.com/apache/rocketmq/tree/develop/docs). The Rust implementation will be carried out sequentially in the following order.

## Name Server

Feature list:

> Not support: :broken_heart: :x:
>
> Base support: :heart: :white_check_mark:
>
> Perfect support: :sparkling_heart: :white_check_mark:

| Feature                                | request code | Support                              | remark |
| -------------------------------------- | ------------ | ------------------------------------ | ------ |
| Put KV Config                          | 100          | :sparkling_heart: :white_check_mark: |        |
| Get KV Config                          | 101          | :sparkling_heart: :white_check_mark: |        |
| Delete KV Config                       | 102          | :sparkling_heart: :white_check_mark: |        |
| Get kv list by namespace               | 219          | :sparkling_heart: :white_check_mark: |        |
| Query Data Version                     | 322          | :sparkling_heart: :white_check_mark: |        |
| Register Broker                        | 103          | :sparkling_heart: :white_check_mark: |        |
| Unregister Broker                      | 104          | :sparkling_heart: :white_check_mark: |        |
| Broker Heartbeat                       | 904          | :sparkling_heart: :white_check_mark: |        |
| Get broker member_group                | 901          | :sparkling_heart: :white_check_mark: |        |
| Get broker cluster info                | 106          | :sparkling_heart: :white_check_mark: |        |
| Wipe write perm of boker               | 205          | :sparkling_heart: :white_check_mark: |        |
| Add write perm of brober               | 327          | :sparkling_heart: :white_check_mark: |        |
| Get all topic list from name server    | 206          | :sparkling_heart: :white_check_mark: |        |
| Delete topic in name server            | 216          | :sparkling_heart: :white_check_mark: |        |
| Register topic in name server          | 217          | :sparkling_heart: :white_check_mark: |        |
| Get topics by cluster                  | 224          | :sparkling_heart: :white_check_mark: |        |
| Get system topic list from name server | 304          | :sparkling_heart: :white_check_mark: |        |
| Get unit topic list                    | 311          | :sparkling_heart: :white_check_mark: |        |
| Get has unit sub topic list            | 312          | :sparkling_heart: :white_check_mark: |        |
| Get has unit sub ununit topic list     | 313          | :sparkling_heart: :white_check_mark: |        |
| Update name server config              | 318          | :broken_heart: :x:                   |        |
| Get name server config                 | 318          | :broken_heart: :x:                   |        |

Other module implementations will be done subsequently, starting with the Rust implementation of the Name Server. The goal is to achieve functionality similar to the Java version.

## 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](https://repobeats.axiom.co/api/embed/6ca125de92b36e1f78c6681d0a1296b8958adea1.svg "Repobeats analytics image")

<a href="https://github.com/mxsm/rocketmq-rust/graphs/contributors">
  <img src="https://contrib.rocks/image?repo=mxsm/rocketmq-rust&anon=1" />
</a>


|                   **Stargazers Over Time**                   |                  **Contributors Over Time**                  |
| :----------------------------------------------------------: | :----------------------------------------------------------: |
| [![Stargazers over time](https://api.star-history.com/svg?repos=mxsm/rocketmq-rust&type=Date)](https://api.star-history.com/svg?repos=mxsm/rocketmq-rust&type=Date) | [![GitHub Contributor Over Time](https://contributor-overtime-api.git-contributor.com/contributors-svg?chart=contributorOverTime&repo=mxsm/rocketmq-rust)](https://git-contributor.com?chart=contributorOverTime&repo=mxsm/rocketmq-rust) |

## License

RocketMQ-Rust is licensed under the [Apache License 2.0](https://github.com/mxsm/rocketmq-rust/blob/main/LICENSE-APACHE) and [MIT license](https://github.com/mxsm/rocketmq-rust/blob/main/LICENSE-MIT)



[codecov-image]: https://codecov.io/gh/mxsm/rocketmq-rust/branch/main/graph/badge.svg
[codecov-url]: https://codecov.io/gh/mxsm/rocketmq-rust