Java 如果在生产者之后启动,卡夫卡消费者不会读取生产者发送的消息
我发现属性auto.offset.reset=最早或auto.offset.reset=最新 现在是我的场景,有1个主题,1个分区,1个消费者 例如,我已经开始制作。制作人向主题发送100张唱片。现在我开始讨论消费者。根据属性auto.offset.reset=我的使用者将从分区的0索引开始读取记录。Java 如果在生产者之后启动,卡夫卡消费者不会读取生产者发送的消息,java,apache-kafka,kafka-consumer-api,Java,Apache Kafka,Kafka Consumer Api,我发现属性auto.offset.reset=最早或auto.offset.reset=最新 现在是我的场景,有1个主题,1个分区,1个消费者 例如,我已经开始制作。制作人向主题发送100张唱片。现在我开始讨论消费者。根据属性auto.offset.reset=我的使用者将从分区的0索引开始读取记录。 现在,如果我的消费者对1-100记录进行异步提交,并且记录下降。同时,制作人发送了100多张唱片。当使用者出现时,它将开始从分区的0索引读取消息,还是从分区的101索引读取消息,并从101到200
现在,如果我的消费者对1-100记录进行异步提交,并且记录下降。同时,制作人发送了100多张唱片。当使用者出现时,它将开始从分区的0索引读取消息,还是从分区的101索引读取消息,并从101到200处理记录。偏移量与此不相关。您应该将其配置为从开始读取的属性。在java中,有类似于seektobegining的东西,因为Kafka 0.9以后如果提交成功,Kafka将把使用者的进度存储在一个特殊的内部主题
\u consumer\u offset
中。此主题存储每个使用者组在主题和分区上使用的偏移量
因此,当您的消费者再次启动时(在同一消费者组内!),它将继续读取最后提交的偏移量(在您的示例中为101)auto.offset.reset
指定在\uuu consumer\u offset
中没有信息时的行为(您还没有任何提交)