设置消费者properties的两个参数
consumer.group.id
properties.setProperty("auto.offset.reset", "earliest”) // latest
注意:
只要不更改group.id,每次重新消费kafka,都是从上次消费结束的地方继续开始,不论"auto.offset.reset”属性设置的是什么
场景一:Kafka上在实时被灌入数据,但kafka上已经积累了两天的数据,如何从最新的offset开始消费?
(最新指相对于当前系统时间最新)
1.将group.id换成新的名字(相当于加入新的消费组)
2.网上文章写还要设置 properties.setProperty("auto.offset.reset", "latest”)
实验发现即使不设置这个,只要group.id是全新的,就会从最新的的offset开始消费
场景二:kafka在实时在灌入数据,kafka上已经积累了两天的数据,如何从两天前最开始的位置消费?
1.将group.id换成新的名字
2.properties.setProperty("auto.offset.reset", "earliest”)
场景三:不更改group.id,只是添加了properties.setProperty("auto.offset.reset", "earliest”),consumer会从两天前最开始的位置消费吗?
不会,只要不更改消费组,只会从上次消费结束的地方继续消费
场景四:不更改group.id,只是添加了properties.setProperty("auto.offset.reset", "latest”),consumer会从距离现在最近的位置消费吗?
不会,只要不更改消费组,只会从上次消费结束的地方继续消费
应用:
正式打包上线前应该使用新的group.id,以便于从kafka最新的位置开始消费
只要将group.id换成全新的,不论"auto.offset.reset”是否设置,设置成什么,都会从最新的位置开始消费
Kafka命令行操作
1)查看当前服务器中的所有topic
[sea@hadoop002 kafka]$ bin/kafka-topics.sh --zookeeper hadoop002:2181 --list
2)创建topic
[sea@hadoop002 kafka]$ bin/kafka-topics.sh --zookeeper hadoop002:2181 --create --replication-factor 3 --partitions 1 --topic first
选项说明:
--topic 定义topic名
--replication-factor 定义副本数
--partitions 定义分区数
3)删除topic
[sea@hadoop002 kafka]$ bin/kafka-topics.sh --zookeeper hadoop002:2181 --delete --topic first
需要server.properties中设置delete.topic.enable=true否则只是标记删除或者直接重启。
4)发送消息
[sea@hadoop002 kafka]$ bin/kafka-console-producer.sh --broker-list hadoop002:9092 --topic first
>hello world
>sea sea
5)消费消息
[sea@hadoop103 kafka]$ bin/kafka-console-consumer.sh --zookeeper hadoop002:2181 --from-beginning --topic first
--from-beginning:会把first主题中以往所有的数据都读取出来。根据业务场景选择是否增加该配置。
6)查看某个Topic的详情
[sea@hadoop002 kafka]$ bin/kafka-topics.sh --zookeeper hadoop002:2181 --describe --topic first