我是kafka的新手,并试图了解是否有办法从最后消耗的偏移量中读取消息,但不是从开头就读取消息。
我正在写一个案例,所以我的意图不会偏离。
Eg:
1) I produced 5 messages at 7:00 PM and console consumer consumed those.
2) I stopped consumer at 7:10 PM
3) I produced 10 message at 7:20 PM. No consumer had read those messages.
4) Now, i have started console consumer at 7:30 PM, without from-beginning.
5) Now, it Will read the messages produced after it has started. Not the earlier ones, which were produced at 7.20 PM
有没有办法从最后消耗的偏移中获取消息。?
答案 0 :(得分:9)
我是kafka的新手,并试图了解是否有办法从上次消费的偏移中读取消息,但不是从开始。
是的,可以使用控制台消费者来读取上次消耗的偏移量。您必须在调用kafka-console-consumer时添加 consumer.config 标志。
实施例: -
[root@sandbox bin]# ./kafka-console-consumer.sh --topic test1 --zookeeper localhost:2181 --consumer.config /home/mrnakumar/consumer.properties
此处 /home/mrnakumar/consumer.properties 是一个包含 group.id 的文件。 以下是/home/mrnakumar/consumer.properties的外观: -
group.id = consoleGroup
使用consumer.config,可以从 [通过使用--from-beginning] 开始读取,也可以从Log的结尾读取。日志结束表示消费者启动后发布的所有消息。
答案 1 :(得分:3)
您应该在auto.offset.reset
上的消费者配置中设置largest
参数,这样它将在最后提交的偏移量之后读取所有消息。
答案 2 :(得分:0)
在使用者配置中设置auto.offset.reset=earliest
和固定的group.id=something
将在最后提交的偏移量处启动使用者。就您而言,它应该在7:20的第一条消息开始使用。如果您希望它开始阅读在它开始后发布的消息,那么auto.offset.reset=latest
将忽略在7:20发送的10条消息,并读取它开始后出现的任何消息。
如果希望它从头开始,则必须在第一个seekToBeginning
之后调用consumer.poll()
,或将使用者组ID更改为唯一的ID。