小白提问,使用了kafka教程中的例子,本地启动成功,也跑成功了,但是有些小疑问忘解惑。 kafka生产者产生的数据是否持久化到了硬盘? 我先启动生产者,待数据发送完毕后,再启动消费者,此时消费者并不能获取到生产者发送的记录,为什么?
持久化
你这种只有在第一次的时候才这样。就跟你订报纸一样,你订了报纸之前,报社是不清楚谁需要定的,在订阅之后,之前的报纸是不会补发给你的。但是你订阅之后,就算你消费者在关闭期间,新的消息也不会丢,当你消费者启动后,会把后面的消息补发给你,因为你已经“订阅”了。
感谢解答,但是还是有些疑问,“但是你订阅之后,就算你消费者在关闭期间,新的消息也不会丢,当你消费者启动后,会把后面的消息补发给你”,是不是由auto.offset.reset = earliest 这个设置来控制的?
你可以试试这个参数,并不是的 https://www.orchome.com/535
小白继续问个问题:我有2个消费者设置同一个group.id,这就表明这2个消费者在同一分区?
这2个消费者订阅同一个topic,按照入门介绍中的说法,同一时间同一分区只有一个消费者能接收消息,这个我测了一下没问题,有个疑问是,我手动将消费者1服务停止了,但是消费者2并不是立马继续接收消息,而是等待了一会才继续接收生产者的消息,这在我看来就是生产者的消息丢失了,这个是我理解错误,还是配置有问题?
这个是超时时间,当你手动kill一个消费者之后,集群并没有立刻知道。而是通过心跳检车发现的,这段时间并没有丢失任何消息,过段时间另外一个消费者会受到刚才消费者1没拿到的消息,并不会丢失。
非常感谢解答~
你的答案