【发布时间】:2016-05-17 16:19:04
【问题描述】:
如果我使用 Kafka 异步生产者,假设缓冲区中有 X 条消息。 当它们在客户端实际处理时,如果代理或特定分区关闭了一段时间,kafka 客户端将重试,如果一条消息失败,它是否会将特定消息标记为失败并继续下一条消息(这可能导致乱序消息)?或者,为了保持顺序,它是否会使批处理中的剩余消息失败?
我接下来要维护顺序,所以理想情况下希望 kafka 从失败的地方使批次失败,所以我可以从失败点重试,我将如何实现?
【问题讨论】:
-
只有在你改变了默认的retires设置后,Kafka才会重试。 fron kafka docs:允许重试可能会改变记录的顺序,因为如果将两条记录发送到单个分区,并且第一个失败并被重试但第二个成功,那么第二个记录可能首先出现。
标签: apache-kafka kafka-producer-api