Expand description
§Rust Task Queue Framework
A high-performance, Redis-backed task queue system with auto-scaling capabilities designed for use with async Rust applications.
§Features
- Redis-backed broker for reliable message delivery
- Auto-scaling workers based on queue load
- Task scheduling with delay support
- Multiple queue priorities
- Retry logic with configurable attempts
- Task timeouts and failure handling
- Metrics and monitoring
- Actix Web integration (optional)
- Automatic task registration (optional)
§Quick Start
§Basic Usage
use rust_task_queue::prelude::*;
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, AutoRegisterTask)]
struct MyTask {
data: String,
}
#[async_trait::async_trait]
impl Task for MyTask {
async fn execute(&self) -> Result<Vec<u8>, Box<dyn std::error::Error + Send + Sync>> {
println!("Processing: {}", self.data);
use serde::Serialize;
#[derive(Serialize)]
struct Response { status: String }
let response = Response { status: "completed".to_string() };
Ok(rmp_serde::to_vec(&response)?)
}
fn name(&self) -> &str {
"my_task"
}
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let task_queue = TaskQueue::new("redis://localhost:6379").await?;
// Start workers
task_queue.start_workers(2).await?;
// Enqueue a task
let task = MyTask { data: "Hello, World!".to_string() };
let task_id = task_queue.enqueue(task, "default").await?;
println!("Enqueued task: {}", task_id);
Ok(())
}
§Automatic Task Registration
use rust_task_queue::prelude::*;
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, Default, AutoRegisterTask)]
struct MyTask {
data: String,
}
#[async_trait::async_trait]
impl Task for MyTask {
async fn execute(&self) -> Result<Vec<u8>, Box<dyn std::error::Error + Send + Sync>> {
println!("Processing: {}", self.data);
use serde::Serialize;
#[derive(Serialize)]
struct Response { status: String }
let response = Response { status: "completed".to_string() };
Ok(rmp_serde::to_vec(&response)?)
}
fn name(&self) -> &str {
"my_task"
}
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Task is automatically registered!
let task_queue = TaskQueueBuilder::new("redis://localhost:6379")
.auto_register_tasks()
.initial_workers(2)
.build()
.await?;
let task = MyTask { data: "Hello, World!".to_string() };
let task_id = task_queue.enqueue(task, "default").await?;
println!("Enqueued task: {}", task_id);
Ok(())
}
Re-exports§
pub use inventory;
auto-register
pub use autoscaler::*;
pub use broker::*;
pub use cli::*;
pub use config::*;
pub use error::*;
pub use metrics::*;
pub use queue::*;
pub use scheduler::*;
pub use task::*;
pub use worker::*;
Modules§
- actix
actix-integration
- Actix Web integration helpers with comprehensive metrics endpoints
- autoscaler
- axum
axum-integration
- Axum integration helpers with comprehensive metrics endpoints
- broker
- cli
cli
- Consumer Helper Functions
- config
- Configuration management for the task queue framework
- error
- metrics
- prelude
- Convenience re-exports for common types and traits
- queue
- scheduler
- task
- tracing_
utils - Comprehensive tracing utilities for the Rust Task Queue system
- worker
Macros§
- create_
axum_ task_ endpoint axum-integration
- Helper macro for creating typed task endpoints for Axum
- create_
task_ endpoint actix-integration
- Helper macro for creating typed task endpoints
- create_
worker_ main cli
- Macro to create a complete task worker binary with minimal code
- create_
worker_ with_ builder cli
- Macro to create a task worker with custom configuration using the builder pattern
- manual_
register_ task - register_
task_ with_ name - register_
tasks - timed_
operation - Helper macro for timing operations with automatic tracing
- traced_
operation - Helper macro for creating traced spans around async operations
Structs§
- Component
Health - Health
Status - Health check status for monitoring
- Task
Queue - Main task queue framework
- Task
Queue Builder - Builder for configuring and creating TaskQueue instances
- Task
Queue Metrics - Comprehensive metrics for monitoring
Attribute Macros§
- proc_
register_ task - Attribute macro for registering tasks with a custom name.
Derive Macros§
- Auto
Register Task - Automatically register a task type with the task registry.