Kafka 提交偏移量

Kafka commit offset

Kafka手动提交offset,失败时怎么办? 示例 -> 假设偏移量 0 已提交,偏移量 1 已提交,然后偏移量 2 已提交。偏移量 1 处的消息是否重试?

这取决于你如何提交:

commitSync 假设您像示例中那样分别提交每个偏移量,如果未提交偏移量 1,它将重试提交该偏移量,直到成功或遇到不可重试的失败。 该机制的一个缺点是在代理响应之前应用程序被阻塞,因此限制了应用程序吞吐量。

另一方面,在 commitAsync 上,如果提交偏移量 1 失败,则不会重试。原因是当代理响应返回到您的 Kafka 客户端时,可能后来提交已经成功了。 假设在您的示例中,由于临时网络问题,偏移量为 1 的消息提交失败。与此同时,应用程序已经成功处理了偏移量为 2 的消息。如果我们现在重试之前失败的提交,它可能会成功提交偏移量 1 after 2 已经提交。在重新平衡的情况下,这将导致更多重复。