0 Tage Serie
javascript / expert
Snippet

Resiliente asynchrone Streams mit exponentiellem Backoff

Beim Umgang mit instabilen Netzwerkanfragen reicht ein einfacher Retry oft nicht aus. Exponentieller Backoff reduziert die Serverbelastung, indem die Verzögerung zwischen den Versuchen mathematisch erhöht wird, was einen stabileren Wiederherstellungsmechanismus gewährleistet.

snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
import { timer, retry } from 'rxjs';
this.http.get('/api/data').pipe(
retry({
count: 3,
delay: (error, retryCount) => {
const backoffTime = Math.pow(2, retryCount) * 1000;
console.warn(`Retry #${retryCount} in ${backoffTime}ms`);
return timer(backoffTime);
}
})
).subscribe();
angular
Erklärung
1
delay: (error, retryCount) => ...
Eine dynamische Verzögerungsfunktion, die den Fehler und den aktuellen Versuchsindex erhält.
2
Math.pow(2, retryCount) * 1000
Berechnet die Wartezeit exponentiell (1s, 2s, 4s usw.), um Probleme durch Überlastung zu vermeiden.