https://github.com/hexboltmq/hexboltmq
A High-Performance, Distributed Message Queueing System for Modern Workflows
https://github.com/hexboltmq/hexboltmq
hight-performance message-queue rust
Last synced: 8 months ago
JSON representation
A High-Performance, Distributed Message Queueing System for Modern Workflows
- Host: GitHub
- URL: https://github.com/hexboltmq/hexboltmq
- Owner: hexboltmq
- License: mit
- Created: 2024-08-25T12:25:12.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-09-22T18:37:42.000Z (over 1 year ago)
- Last Synced: 2025-03-31T08:43:50.935Z (10 months ago)
- Topics: hight-performance, message-queue, rust
- Language: Rust
- Homepage:
- Size: 109 KB
- Stars: 9
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# HexboltMQ
**HexboltMQ** is a distributed message queueing framework designed for modern-day workflows. It focuses on delivering durable, fault-tolerant, highly performant, and highly available message queues. HexboltMQ is built to support a wide range of advanced messaging patterns, including work queues, priority queues, fan-out, broadcast, and more. With strong consistency guarantees, compression, and poison pill detection, HexboltMQ is an ideal choice for building reliable and scalable systems.
## Features
- **Durable and Fault-Tolerant**: Ensure messages are never lost with persistent storage and replication across multiple nodes.
- **High Performance**: Leverage asynchronous processing, efficient data structures, and optimized I/O for low-latency message handling.
- **High Availability**: Clustering and load balancing ensure that your message queues are always available, even during node failures.
- **Advanced Routing**: Supports various message routing strategies, including work queues, priority queues, fan-out, and broadcast.
- **Compression**: Built-in support for message compression to save bandwidth and storage.
- **Strong Consistency**: Implements consensus algorithms like Raft to maintain consistent state across distributed systems.
- **Poison Pill Detection**: Automatically detect and handle problematic messages to prevent them from disrupting the system.
## Getting Started
### Prerequisites
- **Rust**: Ensure that you have the latest stable version of Rust installed. You can install Rust using [rustup](https://rustup.rs/).
- **Docker**: (Optional) For running HexboltMQ in a containerized environment.
### Installation
1. Clone the repository:
```bash
git clone https://github.com/adi3g/hexboltmq.git
cd hexboltmq
```
2. Build the project:
```bash
cargo build --release
```
3. Run the Hexboltmq server:
```bash
cargo run --bin hexboltmq-server
```
### Usage
HexboltMQ provides both gRPC and REST APIs for interacting with the message queues.
- **Enqueue a Message**: Send a message to a queue.
- **Dequeue a Message**: Receive a message from a queue.
- **Acknowledge a Message**: Confirm the processing of a message.
Refer to the API documentation for detailed usage instructions.
## Architecture Overview
HexboltMQ's architecture is designed for scalability and fault tolerance:
- **Core**: Handles the main message queueing logic, including message routing, prioritization, and processing.
- **Storage**: Manages both in-memory and persistent storage for queues, ensuring durability.
- **Cluster**: Implements clustering and replication to provide high availability and fault tolerance.
- **API**: Exposes gRPC and REST APIs for easy integration with other systems.
- **Utilities**: Includes utilities for compression, monitoring, and logging.
## Contributing
Contributions are welcome! If you'd like to contribute to HexboltMQ, please follow these steps:
1. Fork the repository.
2. Create a new branch with a descriptive name.
3. Make your changes and add tests if necessary.
4. Submit a pull request with a detailed description of your changes.
Please read our [contributing guidelines](CONTRIBUTING.md) for more information.
## License
HexboltMQ is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
## Contact
For any questions or suggestions, feel free to open an issue or contact the maintainers at `contact@adib-grouz.com`.