Skip to main content

Requirements

  • Rust 1.70 or later
  • A supported message broker (Redis, RabbitMQ, or SurrealDB)

Add the dependency

Add Broccoli to your Cargo.toml:
[dependencies]
broccoli_queue = "0.4"

Feature flags

Broccoli uses feature flags to enable different message brokers. By default, only Redis is enabled.

Available features

FeatureDescriptionDefault
redisEnable Redis broker support
rabbitmqEnable RabbitMQ broker support
surrealdbEnable SurrealDB broker support
managementEnable queue management API

Using specific brokers

[dependencies]
broccoli_queue = "0.4"

Management feature

Enable the management feature to access queue status and monitoring capabilities:
[dependencies]
broccoli_queue = { version = "0.4", features = ["management"] }

Required dependencies

Broccoli requires async runtime support. Add Tokio and serde to your project:
[dependencies]
broccoli_queue = "0.4"
tokio = { version = "1", features = ["full"] }
serde = { version = "1.0", features = ["derive"] }
For working with timestamps in your message payloads, you may also want:
[dependencies]
chrono = { version = "0.4", features = ["serde"] }

Verifying installation

Create a simple test to verify Broccoli is installed correctly:
use broccoli_queue::queue::BroccoliQueue;

#[tokio::main]
async fn main() {
    // This will fail to connect without a running broker,
    // but verifies the library is installed correctly
    let result = BroccoliQueue::builder("redis://localhost:6379")
        .build()
        .await;
    
    match result {
        Ok(_) => println!("Connected successfully!"),
        Err(e) => println!("Connection failed (expected without broker): {}", e),
    }
}
Run with:
cargo run

Next steps