Skip to content

feat(messaging): @message_listener retry + dead-letter routing (v26.06.47)#74

Merged
ancongui merged 1 commit into
mainfrom
feat/message-listener-retry-dlq
Jun 7, 2026
Merged

feat(messaging): @message_listener retry + dead-letter routing (v26.06.47)#74
ancongui merged 1 commit into
mainfrom
feat/message-listener-retry-dlq

Conversation

@ancongui
Copy link
Copy Markdown
Contributor

@ancongui ancongui commented Jun 7, 2026

@message_listener gained resilience options (Spring Kafka @RetryableTopic/DefaultErrorHandler parity), applied adapter-agnostically (Kafka, RabbitMQ, in-memory) via wrap_listener at wiring time: retries (re-invoke N times, linear retry_delay backoff) and dead_letter_topic (still-failing message re-published there with x-original-topic/x-exception headers instead of propagating). No options → handler wired unchanged (zero overhead). Tests (4): unchanged-without-config, retries-then-succeeds, exhausted→DLQ (headers asserted), exhausted-no-DLQ→reraises. Gates: mypy --strict (621), ruff+format, full suite 3845.

… v26.06.47

@message_listener gained retries/retry_delay/dead_letter_topic (Spring Kafka @RetryableTopic /
DefaultErrorHandler parity), applied adapter-agnostically via wrap_listener at wiring time:
- retries: re-invoke handler N times (linear retry_delay backoff).
- dead_letter_topic: still-failing message re-published there with x-original-topic/x-exception
  headers instead of propagating.
No options -> handler wired unchanged (zero overhead).

Tests: tests/messaging/test_listener_retry_dlq.py (4). Gates: mypy --strict (621), ruff + format,
full suite 3845 passed.
@ancongui ancongui merged commit c9650dd into main Jun 7, 2026
5 checks passed
@ancongui ancongui deleted the feat/message-listener-retry-dlq branch June 7, 2026 12:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant