批处理模式下 Spring Boot kafka 中的错误处理

Error handling in SpringBoot kafka in Batch mode

我想知道有没有什么方法可以在 Spring 以批处理模式启动 Kafka 时发送死信主题中的失败记录。 我不想让记录重复发送,因为它是批量消耗的,而且已经处理的很少。 我看到这个 link ofspring-kafka consumer batch error handling with spring boot version 2.3.7

我考虑了一个用例来停止容器并在不使用 DLT 的情况下重新启动,但重复的问题将再次出现在批处理模式下。

@Garry Russel 能否提供一个批量错误处理的小代码。

RetryingBatchErrorHandler 已添加到 spring-kafka 版本 2.5(随 Boot 2.3 一起提供)。

侦听器必须抛出异常以指示批处理中的哪条记录失败(完整记录或列表中的索引)。

提交失败记录之前记录的偏移量,可以重试失败记录and/or发送到死信主题。

https://docs.spring.io/spring-kafka/docs/current/reference/html/#recovering-batch-eh

那里有一个小例子。

RetryingBatchErrorHandler 是在 2.3.7 中添加的,但它会将整个批次发送到死信主题,这通常不是您想要的(因此我们添加了 RetryingBatchErrorHandler)。