Idempotency¶
Idempotent request handling for reliable distributed systems.
Overview¶
StrataRouter Enterprise provides idempotency keys to ensure that duplicate requests are safely handled, preventing issues like double-execution or inconsistent state.
Implementation¶
use stratarouter_enterprise::idempotency::{IdempotencyService, IdempotencyKey};
let service = IdempotencyService::new(db_pool);
// Client provides idempotency key
let idempotency_key = "req_abc123";
// Check if request was already processed
match service.check_idempotency(idempotency_key).await? {
IdempotencyStatus::Fresh => {
// Process request
let result = execute_request(request).await?;
// Store result
service.store_result(idempotency_key, &result).await?;
Ok(result)
}
IdempotencyStatus::AlreadyProcessed(cached_result) => {
// Return cached result
Ok(cached_result)
}
}
Configuration¶
pub struct IdempotencyConfig {
/// How long to retain idempotency keys
pub retention_duration: Duration,
/// Maximum stored results per tenant
pub max_results_per_tenant: usize,
}