Sari la conținut

Reîncercare la livrare

Implicit trimitem comanda o singură dată. Dacă apelul eșuează, comanda nu ajunge la tine.

Poți schimba asta singur: activezi reîncercarea și alegi câte încercări facem și cât așteptăm între ele. Configurarea e a ta și se aplică doar integrării tale.

Merită activată dacă:

  • ai timeout-uri ocazionale, dar sistemul e idempotent;
  • endpointul tău trece prin componente care mai pică scurt (proxy, VPN, tunel);
  • preferi o comandă întârziată cu câteva secunde uneia pierdute.

Nu o activa dacă nu ai deduplicare, sau dacă preferi să pierzi o comandă decât să o dublezi.

Meniul Profil → Reincercare la livrare. Ecranul este al tău: nu ai nevoie de administrator.

Ecranul de configurare a reîncercării, cu reîncercarea activată

Cât timp bifa Activeaza reincercarea e goală, restul câmpurilor nici nu apar: trimitem o singură dată, exact ca înainte să existe această configurare. Bifează-o și se deschid cele șase câmpuri de mai jos.

Numărul total de apeluri, prima încercare inclusă. 1 înseamnă fără reîncercare; 3 înseamnă încercarea inițială plus două reluări.

Valoare Rezultat
1 Un singur apel. Echivalent cu retry oprit.
2 Apelul inițial plus o reluare.
3 Apelul inițial plus două reluări. Maximul acceptat.

Peste 3 nu urcăm: fiecare reluare întârzie comanda, iar o comandă care ajunge la bucătărie după minute întregi nu mai ajută pe nimeni.

Cât așteptăm între prima încercare și a doua. De la a treia încolo, pauza se înmulțește cu Multiplicator.

Cu cât crește pauza la fiecare reluare. 2 înseamnă că fiecare pauză e dublul celei dinainte; 1 înseamnă pauze egale.

Plafonul unei pauze, oricât ar crește prin înmulțire. Cu valorile implicite nu se atinge niciodată — contează abia dacă mărești mult prima pauză sau multiplicatorul.

Cât variem aleatoriu fiecare pauză, ca fracție din ea. 0,2 înseamnă ±20%: o pauză de 500 ms devine între 400 și 600 ms.

Există ca să nu reluăm toate comenzile în exact aceeași milisecundă când endpointul tău tocmai și-a revenit — altfel i-am da toată rafala deodată.

Ce coduri HTTP tratăm ca reușită. Gol înseamnă orice 2xx, ceea ce e potrivit pentru aproape toată lumea.

Completează-l doar dacă sistemul tău confirmă cu un cod anume — de exemplu 202 Accepted pentru procesare asincronă. Scrie-le separate prin virgulă: 200, 202.

Valorile sunt verificate pe server. Ce trece de ele nu se salvează — primești 400, cu câmpul respins numit în răspuns.

Câmp Minim Maxim
Incercari (total) 1 3
Prima pauza (ms) 0 10 000
Pauza maxima (ms) 0 10 000
Multiplicator 1 10
Variatie (0-1) 0 1
Coduri considerate succes 10 coduri, fiecare între 100 și 599

Plafoanele există fiindcă reîncercările rulează în interiorul procesării comenzii. O politică largă nu întârzie doar comanda către restaurant, ci ține procesarea ocupată. Cu limitele de mai sus, așteptarea totală nu poate depăși ~24 de secunde.

Când bifezi Activeaza reincercarea, câmpurile vin deja completate:

Câmp Implicit
Incercari (total) 3
Prima pauza (ms) 500
Pauza maxima (ms) 4000
Multiplicator 2
Variatie (0-1) 0,2
Coduri considerate succes gol (orice 2xx)

Cu ele, o comandă care eșuează de două ori și reușește la a treia arată așa:

Încercare Pauză înainte Cu variație de ±20%
1 imediat
2 500 ms 400 – 600 ms
3 1000 ms 800 – 1200 ms

Întârzierea totală în cazul cel mai rău este de aproximativ 1,5 secunde — suficient ca să treacă peste o pană scurtă, prea puțin ca să conteze pentru client.

Fiecare încercare — reușită sau nu — apare în căutarea de comandă, cu ora, pauza dinainte, codul HTTP și eroarea.

Acolo verifici dacă reîncercarea chiar te ajută: dacă majoritatea comenzilor reușesc abia la ultima încercare, ai o problemă de disponibilitate pe care retry-ul doar o maschează.

Debifează Activeaza reincercarea și salvează. Revenim la o singură încercare, exact ca înainte de a exista configurarea.