批处理模式下 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
)。
我想知道有没有什么方法可以在 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
)。