TCP- und Http-Retries mit Apache Commons HttpClient (Teil 2)
26 Sep 2020Nachdem die Antwort des aufgerufenen Services erfolgreich angekommen ist, kommt die ServiceUnavailableRetryStrategy
ins Spiel. Über dieses Interface kann der Apache HttpClient instruiert werden, den Request zu wiederholen.
Die DefaultServiceUnavailableRetryStrategy
wiederholt einen Request bei Erhalt des Statuscodes 503 (Service Unavailable). Die maximale Anzahl der Retries sowie das Delay kann konfiguriert werden. Neben einem Retry bei HTTP 503 empfiehlt sich im Kubernetes-Umfeld auch ein Retry bei Erhalt eines HTTP 502 (Bad-Request), der auftreten kann, wenn der aufrufende Service neu deployed wurde, und noch eine persistente Connection zum bereits abgebauten Pod besteht. Hierzu muss man das ServiceUnavailableRetryStrategy
Interface selber implementieren.
Jedes Retry sollte geloggt werden, um beobachten zu können, wie häufig so Retry stattfindet.
Konfiguration im HttpClient
Zusammenfassung
- Retries auf TCP-Ebene: Konfiguration eines HttpRequestRetryHandlers
- Retries auf HTTP-Ebene: Konfiguration einer ServiceUnavailableRetryStrategy
- Für den Einsatz in Kubernetes empfiehlt es sich, von der Standardimplementierung abzuweichen und eigene Retry-Konditionen zu definieren.