Skip to content

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,
}

See Also