如何在Spring-Kafka中处理错误和重试

时间:2018-09-18 15:01:07

标签: spring-kafka

这是一个与以下问题有关的问题: https://github.com/spring-projects/spring-kafka/issues/575

我正在使用spring-kafka 1.3.7和在读取过程-写入周期中进行事务处理。 为此,我应该在spring kafka容器上使用KTM,以在整个侦听器进程上启用事务,并根据僵​​尸隔离的分区(1.3.7更改)自动处理事务ID。

如果我对问题#575的理解很好,则在使用事务管理器时,不能在容器中使用RetryTemplate。

在这种情况下,我应该如何处理错误和重试? 事务的默认行为是无限重试?这似乎很危险。意外的异常可能只会阻塞生产中的整个过程。

1 个答案:

答案 0 :(得分:0)

即将发布的2.2版本为DefaultAfterRollbackProcessor添加了恢复功能-因此您可以在尝试了几次后停止重试。

Docs HerePR here

它还提供了一种可选的机制,可以将失败的记录发送到死信主题。

如果您无法升级到2.2(本周底发布候选版本,则将于10月发布GA),则可以提供具有类似功能的自定义AfterRollbackProcessor

编辑

或者,您可以将代码添加到侦听器(或其错误处理程序)中,以跟踪传递相同记录的次数,并在侦听器或其侦听器级别的错误处理程序中处理错误。