Spring Kafka with Retry-After support

The Spring Kafka library provides error handling via a well-established exponential back-off mechanism. However, if the error is HTTP 429 “Too Many Requests” (that is, rate limiting), ordinary exponential increases in the delay between retries are a bit like a brute-force attack: we either waste resources by retrying too early, or waste time by waiting too long. It would be better to wait exactly as long as the server tells us to.

In the following sections, I will show how to approach the implementation. In short, it boils down to writing a single, uncomplicated class.

Czytaj dalej „Spring Kafka with Retry-After support”

Spring Kafka z obsługą Retry-After

Biblioteka Spring Kafka umożliwia obsługę błędów przez sprawdzony mechanizm exponential back-off. Jednak jeśli błędem jest HTTP 429 „Too Many Requests” (czyli rate limiting), zwykłe wykładnicze zwiększanie przerw między kolejnymi próbami jest trochę jak atak brute force: marnujemy zasoby na próbowanie przed czasem, albo marnujemy czas czekając za długo. Lepiej byłoby czekać dokładnie tyle, ile wysyła serwer.

W dalszej części pokażę, jak podejść do implementacji. W dużym skrócie, wystarczy napisanie jednej nieskomplikowanej klasy.

Czytaj dalej „Spring Kafka z obsługą Retry-After”

Future according to Designing Data-Intensive Applications

Artykuł po angielsku — zapraszam na Medium*.

Będę się powtarzał, ale książka Martina Kleppmanna jest świetna i chociaż wymaga zainwestowania sporo czasu, to jest to jedna z lepszych inwestycji, jakie może zrobić dbający o swoją wiedzę programista.

* wejście z tego specjalnego linku nie zmniejszy waszego miesięcznego limitu darmowych artykułów w serwisie

Creative Commons License
Except where otherwise noted, the content by Piotr Kubowicz is licensed under a Creative Commons Attribution 4.0 International License.