A distributed, crash-safe message queue built in Rust
Quick Start • Features • SDKs • Docs • Contributing
PelicanQ provides at-least-once delivery with FIFO ordering, embedded sled persistence, dual-protocol access (HTTP + gRPC + MQTT), and Raft-based clustering for high availability.
# Build the workspace
cargo build
# Run the daemon (Solo mode)
PELICANQ_DATA_DIR=./data cargo run --bin pelicanqd
# Use the Rust SDK example:
cargo run -p rust-publish-consume -- http://127.0.0.1:7072
# Or use the HTTP API directly:
curl -X POST http://127.0.0.1:7070/queues/myqueue
curl -X POST http://127.0.0.1:7070/queues/myqueue/publish \
-H 'content-type: application/json' \
-d '{"payload_base64":"SGVsbG8=","headers":{}}'
curl -X POST http://127.0.0.1:7070/queues/myqueue/consume| Category | Features |
|---|---|
| Core | FIFO queues, priority (0-9), at-least-once delivery, ack/nack, batch operations |
| Persistence | Embedded sled storage, crash recovery, TTL/retention policies, storage watermarks |
| Reliability | Dead-letter queues, message deduplication, delayed/scheduled messages |
| Protocols | HTTP/REST, gRPC (including streaming consume), MQTT 3.1.1 |
| Clustering | Raft consensus (openraft), leader election, failover, snapshot/restore |
| Language | Package | Version | Status |
|---|---|---|---|
| Rust | pelicanq |
0.1.0 |
Reference |
| Go | pelicanq |
v0.1.0 |
Stable |
| Python | pelicanq |
0.1.0 |
Stable |
| Node.js | pelicanq |
0.1.0 |
Stable |
| Java | pelicanq-client |
0.1.0 |
Stable |
| Section | Contents |
|---|---|
| Getting Started | Quickstart, installation, configuration |
| Guides | Publish/consume, batches, scheduling, priorities, dedup, DLQ, MQTT |
| Architecture | System design, storage model, delivery semantics, retention, clustering |
| Deployment | Solo mode, Flock cluster, configuration reference |
| Reference | HTTP API, gRPC API, proto spec, SDK docs |
| Development | Building from source, testing, contributing |
| Roadmap | Completed, in-progress, and planned features |
| Features & Spec | Full feature specification with status |
# Run all tests
cargo test --workspace
# Build in release mode
cargo build --release
# Check formatting
cargo fmt --check
# Lint
cargo clippy --all-targetsWe welcome contributions! See the Contributing Guide to get started.
Small iterative PRs are preferred over large sweeping changes.
MIT
