Expand description
§Foxtive Worker
A background worker framework for message processing, event-driven architectures, and long-running background tasks.
§Overview
Foxtive Worker provides a robust foundation for building message-processing workers with features like:
- Manual message acknowledgment (ack/nack)
- Multiple backend support (RabbitMQ, Redis Streams, in-memory)
- Worker pools with load balancing
- Composable middleware pipeline
- Comprehensive observability and metrics
- HTTP health endpoints for Kubernetes integration
§Quick Start
use foxtive_worker::{Worker, ReceivedMessage};
use foxtive_worker::error::WorkerResult;
use async_trait::async_trait;
struct MyWorker;
#[async_trait]
impl Worker for MyWorker {
fn id(&self) -> &str { "my-worker" }
async fn process(&self, message: ReceivedMessage<serde_json::Value>) -> WorkerResult<()> {
println!("Processing: {}", message.message.id);
// Your processing logic here
message.ack().await?;
Ok(())
}
}§Core Concepts
§Message Abstraction
Messages are separated into pure data (Message<T>) and acknowledgment capability
(AckHandle), combined in ReceivedMessage<T> for safe concurrent processing.
§Two-Level Backoff System
- Worker Restart Backoff: Controls worker restart after crashes (via
Worker::restart_backoff_strategy()) - Message Retry Backoff: Controls retry delays for failed messages (via RetryHandler middleware)
These are independent strategies serving different purposes.
Re-exports§
pub use crate::backends::MemoryBackend;pub use crate::backends::MessageBackend;pub use crate::builder::WorkerPoolBuilder;pub use crate::error::WorkerError;pub use crate::error::WorkerResult;pub use crate::message::AckHandle;pub use crate::message::Message;pub use crate::message::MessageMetadata;pub use crate::message::ReceivedMessage;pub use crate::pool::WorkerPool;pub use crate::strategies::LoadBalancingStrategy;pub use crate::worker::BackoffStrategy;pub use crate::worker::Worker;pub use crate::backends::ReconnectStrategy;pub use crate::backends::ResilientBackend;pub use crate::backends::ResilientBackendBuilder;pub use crate::middleware::MessageHandler;pub use crate::middleware::Middleware;pub use crate::middleware::MiddlewareChain;pub use crate::middleware::MiddlewareResult;pub use crate::middleware::ack_nack::AckNackMiddleware;pub use crate::middleware::batch::BatchMiddleware;pub use crate::middleware::circuit_breaker::CircuitBreakerMiddleware;pub use crate::middleware::processing_timeout::ProcessingTimeoutMiddleware;pub use crate::middleware::retry_handler::RetryHandler;pub use crate::middleware::tracing::TracingMiddleware;pub use crate::metrics::NoOpMetrics as MetricsCollector;pub use crate::batch::BatchConfig;pub use crate::batch::BatchHandler;pub use crate::batch::BatchMetadata;pub use crate::batch::BatchStatus;pub use crate::batch::MessageBatch;pub use crate::batch::ReceivedBatchMessage;pub use crate::batch_processor::BatchProcessor;pub use crate::dlq::DeadLetterMessage;pub use crate::dlq::PoisonPillConfig;pub use crate::dlq::PoisonPillTracker;pub use crate::health::HealthCheck;pub use crate::health::HealthStatus;pub use crate::health::WorkerHealth;pub use crate::health::WorkerPoolHealth;
Modules§
- backends
- batch
- batch_
processor - builder
- dlq
- error
- health
- http
- message
- metrics
- middleware
- pool
- prelude
- Common types and traits used throughout the crate.
- strategies
- stress
- worker
Structs§
- Message
Properties - Message properties containing backend-specific metadata.