我在本地计算机上安装了Kafka,并启动了zookeeper和一个代理服务器。
现在我有一个主题,内容如下:
~/Documents/backups/kafka_2.12-2.2.0/data/kafka$ kafka-topics.sh --zookeeper 127.0.0.1:2181 --topic edu-topic --describe
Topic:edu-topic PartitionCount:3 ReplicationFactor:1 Configs:
Topic: edu-topic Partition: 0 Leader: 0 Replicas: 0 Isr: 0
Topic: edu-topic Partition: 1 Leader: 0 Replicas: 0 Isr: 0
Topic: edu-topic Partition: 2 Leader: 0 Replicas: 0 Isr: 0
我有一个生产者,在启动消费者之前,它已经产生了一些消息,如下所示:
~/Documents/backups/kafka_2.12-2.2.0/data/kafka$ kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic edu-topic
>book
>pen
>pencil
>marker
>
当我使用--from-beginning选项启动消费者时,它不会显示生产者产生的所有消息:
~/Documents/backups/kafka_2.12-2.2.0/data/kafka$ kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic edu-topic --group edu-service --from-beginning
但是,它显示的是新添加的消息。
我在这里做什么错?有什么帮助吗?
答案 0 :(得分:4)
-从头开始:如果使用者尚未确定要使用的偏移量,请从最早的消息开始 出现在日志中,而不是最新消息。
Kafka消费者第一次使用-从头开始,如果您重试我怀疑自己做过的事,它将从它离开的地方开始。您可以使用以下任一选项再次使用消息
kafka-streams-application-reset.sh --application-id教育服务 --input-topics edu-topic --bootstrap-servers localhost:9092 --zookeeper 127.0.0.1:2181
然后从头开始重试
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic edu-topic --group edu-service --from-beginning
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic edu-topic --group new-edu-service --from-beginning
kafka-console-consumer.sh --bootstrap-server localhost:9092 --offset 0 --partition 0 --topic edu-topic
-offset:要从(非负数)开始使用的偏移ID,或者“最早的”(从头开始),或者 “最新”表示从头开始(默认值:最新)
--partition:要消耗的分区从该分区的末尾开始,除非'--offset' 已指定。
答案 1 :(得分:1)
标志
--from-begining
在第一次启动/创建GroupConsumer或存储的(最后一次消耗的)偏移量过期(或可能尝试重置存储的偏移量)时,将会影响GroupConsumer的行为。
否则,GroupConsumer只会在存储的(最后一次提交的)偏移量上继续。
请考虑从手册中获取更多信息。
答案 2 :(得分:1)
因为您使用的是旧的消费群体。 --from-beginning
仅适用于尚未在Kafka群集上记录其组名称的新消费者组。
要从头开始再次食用,您可以:
--from-beginning
创建一个新的消费者组(更改组名)答案 3 :(得分:0)
只需添加 --from-beginning
但是要知道从头开始的消息是不正确的
如果您对同一主题使用了多个分区。 仅在分区级别保证订单。 (对于同一分区)