<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Non-Blocking-Retry on Devops Monk</title><link>https://devops-monk.com/tags/non-blocking-retry/</link><description>Recent content in Non-Blocking-Retry on Devops Monk</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 04 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://devops-monk.com/tags/non-blocking-retry/index.xml" rel="self" type="application/rss+xml"/><item><title>Non-Blocking Retries: @RetryableTopic, BackOff, and the Retry Topic Chain</title><link>https://devops-monk.com/tutorials/spring-kafka/non-blocking-retries/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://devops-monk.com/tutorials/spring-kafka/non-blocking-retries/</guid><description>The Blocking Retry Problem DefaultErrorHandler retries by seeking back to the failed offset. While retrying, no other records from that partition are consumed — the partition is blocked. For a topic with high throughput, one slow retry can cause significant consumer lag.
flowchart TD subgraph Blocking["Blocking Retry (DefaultErrorHandler)"] B1["poll() → [r50, r51, r52, r53]"] B2["process r50 ✓"] B3["process r51 ✗ — retry"] B4["wait 10s... retry r51 ✗"] B5["wait 20s... retry r51 ✗"</description></item></channel></rss>