GithubHelp home page GithubHelp logo

mxsm / rocketmq-rust Goto Github PK

View Code? Open in Web Editor NEW
217.0 6.0 5.0 715 KB

πŸš€Apache RocketMQ Rust implementation. Faster, safer, and with lower memory usage.

Home Page: https://docs.rs/rocketmq-rust

License: Apache License 2.0

Rust 100.00%
rocketmq rust java messaging rocketmq-client

rocketmq-rust's Introduction

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.

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

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. The Rust implementation will be carried out sequentially in the following order.

Name Server

Feature list:

Not support: πŸ’” ❌

Base support: ❀️ βœ…

Perfect support: πŸ’– βœ…

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

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

Stargazers Over Time Contributors Over Time
Stargazers over time GitHub Contributor Over Time

License

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

rocketmq-rust's People

Contributors

antcarryele avatar dependabot[bot] avatar mxsm avatar spaceonet avatar spacexcn avatar teslarustor avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

rocketmq-rust's Issues

[Enhancement]Abstracting the server and client and implementation

Abstracting the server and client, referencing the RocketMQ Java version with corresponding modifications. The abstraction will be done in the following steps:

  1. Define the top-level trait/interface.
  2. Abstract Server.
  3. Implement Server.
  4. Abstract Client.
  5. Implement Client."

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.