Sat*_*rpa 2 apache-kafka spring-boot spring-kafka
我试图理解 RetryTemplate 和 @RetryableTopic 之间的异同。
RetryTemplate 定义在 KafkaListenerContainerFactory 内部,@RetryableTopic 注解与 @KafkaListener 一起添加。这更多的是风格上的差异还是它们有两个不同的目的?
这些是重试失败的处理记录的不同方法。
该RetryTemplate方法已被弃用- 它依赖于重试内存中的记录,如果重试的总时间大于该max.poll.interval.ms属性,则可能会触发分区重新平衡。
您可以使用DefaultErrorHandler来实现blocking retrials- 如果记录处理失败,框架将寻找该偏移量并再次接收记录 - 与之前的方法相比,这减少了等待重试时触发重新平衡的机会。在该记录成功或用尽重试之前,不会处理其他记录,如果您需要保持记录排序,这一点很重要。
@RetryableTopic方法使用一个或多个主题来实现,这意味着如果一条记录失败,它将被转发到另一个主题进行重试,而主主题将继续处理剩余的记录。non-blocking retrials在这种方法中,您会失去排序保证,以换取失败的记录处理重试不会减慢其他记录的处理速度。
| 归档时间: |
|
| 查看次数: |
3839 次 |
| 最近记录: |