Expand description
BreakerMachines - High-performance circuit breaker implementation
This crate provides a complete circuit breaker implementation with:
- Thread-safe event storage with sliding window calculations
- State machine for circuit breaker lifecycle (Closed → Open → HalfOpen)
- Monotonic time tracking to prevent NTP clock skew issues
- Configurable failure thresholds and timeouts
§Example
use breaker_machines::CircuitBreaker;
let mut circuit = CircuitBreaker::builder("my_service")
.failure_threshold(5)
.failure_window_secs(60.0)
.half_open_timeout_secs(30.0)
.success_threshold(2)
.on_open(|name| println!("Circuit {} opened!", name))
.build();
// Execute with circuit protection
let result = circuit.call(|| {
// Your service call here
Ok::<_, String>("success")
});
// Check circuit state
if circuit.is_open() {
println!("Circuit is open, skipping call");
}Re-exports§
pub use builder::CircuitBuilder;pub use bulkhead::BulkheadGuard;pub use bulkhead::BulkheadSemaphore;pub use circuit::CallOptions;pub use circuit::CircuitBreaker;pub use circuit::Config;pub use circuit::FallbackContext;pub use classifier::DefaultClassifier;pub use classifier::FailureClassifier;pub use classifier::FailureContext;pub use classifier::PredicateClassifier;pub use errors::CircuitError;pub use storage::MemoryStorage;pub use storage::NullStorage;pub use storage::StorageBackend;
Modules§
- builder
- Builder API for ergonomic circuit breaker configuration
- bulkhead
- Bulkhead implementation for concurrency limiting
- callbacks
- Callback system for circuit breaker state transitions
- circuit
- Circuit breaker implementation using state machines
- classifier
- Failure classification for exception filtering
- errors
- Error types for circuit breaker operations
- storage
- Storage backends for circuit breaker events
Structs§
- Event
- A single event recorded by the circuit breaker
Enums§
- Event
Kind - Event type for circuit breaker operations