Skip to main content

Crate foxtive_worker

Crate foxtive_worker 

Source
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§

MessageProperties
Message properties containing backend-specific metadata.