为Kafka使用者设置autocommit.enable选项会导致消费消息被提交,这意味着如果消费者崩溃,它将开始从最后提交的位置读取偏移量。
但是,如果我们重新启动kafka服务器,消费者是否会重新读取已提交的偏移量,或者此选项也适用于这种情况 - 在服务器重新启动后,只会消耗未读消息?
答案 0 :(得分:2)
你问(有点):
消费者是否在提交的偏移量之前重新读取消息?
答案是否定的。一旦您的偏移量在服务器上提交,消费者就不会重新阅读任何消息(除非他们手动想要)。
但你可能想问自己这个问题:
消费者是否可以使用相同的消息多次 即使他们启用自动提交也是如此?
答案是"并非没有努力"。要了解原因,请阅读Kafka design的第4.6节。卡夫卡并不能为消费者提供一次性的交付保证。为了确保多个消费者不会消费相同的消息,您需要在消费者客户之间进行协调。
另一种选择是发送所有邮件idempotent。这样,如果多个消费者多次处理相同的消息并不重要。
答案 1 :(得分:1)
提交的偏移量适用于Kafka服务器重启,因为