在 Kafka 消费者中所有先前的重试都用尽后,如何在固定的时间内重试?

问题描述

我在 Kafka 消费者中使用指数重试。它按预期工作,但我需要为其添加更多配置。假设在最大重试尝试后,请求仍然不成功,然后我需要在固定的时间内重试它。
假设乘数为 2,最大重试次数为 4,初始重试间隔为 1 秒 然后重试顺序将是
1 秒、2 秒、4 秒、8 秒。
在第四次尝试后,我需要以固定的时间间隔(比如每 10 秒后)重试,直到请求成功。
有什么办法可以做到这一点吗?

解决方法

假设您在 ExponentialBackOffPolicy 中使用 RetryTemplate,您可以设置其 maxInterval 属性。

如果您使用带有 SeekToCurrentErrorHandlerExponentialBackOff(这是现代版本的 spring-kafka 的首选 - 以避免重新平衡),它也有 maxInterval财产。