Přeskočit na obsah
_CORE
Architektura Začátečník

Retry Pattern — opakování s rozumem

RetryResilienceError Handling
3 min čtení

Správná implementace retry logiky. Exponential backoff, jitter a kdy NEretryovat.

Exponential Backoff s Jitter

async function retryWithBackoff(fn, maxRetries = 3) {
    for (let attempt = 0; attempt <= maxRetries; attempt++) {
        try { return await fn(); }
        catch (error) {
            if (attempt === maxRetries) throw error;
            if (!isTransient(error)) throw error;
            const delay = Math.pow(2, attempt) * 1000 * (0.5 + Math.random() * 0.5);
            await sleep(delay);
        }
    }
}
function isTransient(error) {
    const s = error.response?.status;
    return s === 429 || s === 503 || s >= 500;
}

Kdy NEretryovat

  • 4xx chyby (kromě 429)
  • Non-idempotent operace bez idempotency klíče
  • Autentizační chyby (401/403)
  • Dlouho běžící operace

Shrnutí

Exponential backoff + jitter + max retries. Retryujte jen transientní chyby a idempotentní operace.

Potřebujete pomoct s implementací?

Náš tým má zkušenosti s návrhem a implementací moderních architektur. Rádi vám pomůžeme.

Nezávazná konzultace