kafka服务器重启后重新读取偏移量

qxsslcnc  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(554)

为kafka使用者设置autocommit.enable选项将导致提交已消费的消息,这意味着如果使用者崩溃,它将开始读取最后提交位置的偏移量。
但是,如果我们重新启动kafka服务器,消费者是否会重新读取已提交的偏移量,或者此选项在这种情况下也起作用—在服务器重新启动后,只会使用未读的消息?

4uqofj5v

4uqofj5v1#

提交的偏移量在kafka服务器重新启动时起作用,因为
当producer发布消息时,它会获得一个不可变的偏移量,并在服务器重启时保留该偏移量
在kafka 0.9中,在提交的偏移量存储在一个topic\u committed\u offset(您可能需要检查这个topic的名称)中之后,这个topic将在服务器重启期间保留
在0.9之前的kafka中,提交的偏移量也将存储在zookeeper中,zookeeper将该偏移量保留在日志文件中

nhaq1z21

nhaq1z212#

你问(有点):
使用者是否在提交的偏移量之前重新读取消息?
答案是否定的。一旦在服务器上提交了偏移量,使用者就不会重新读取任何消息(除非他们手动想要)。
但你可能想问自己这个问题:
消费者是否有可能多次使用同一条消息,即使他们启用了自动提交功能?
答案是“不劳而获”。要了解原因,请阅读Kafka设计的第4.6节。Kafka并没有为消费者提供一次交货的保证。为了确保多个消费者不会使用相同的消息,您需要在消费者客户机之间进行协调。
另一个选择是使所有消息都是幂等的。这样,如果多个消费者多次处理同一条消息就无关紧要了。

相关问题