版本 2.11-1.0.0
有时观察到消费者的位置是有用的。我们有一个工具,可以显示 consumer 群体中所有 consumer 的位置,以及他们所在日志的结尾。要在名为my-group的 consumer 组上运行此工具,消费一个名为my-topic的 topic 将如下所示:
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
1).bootstrap形式
> bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group
注意:这将仅显示使用Java consumer API(基于非ZooKeeper的 consumer)的 consumer 的信息
有3个分区,有3个消费线程,同为my-group组
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
my-topic 0 2 4 2 consumer-1-029af89c-873c-4751-a720-cefd41a669d6 /127.0.0.1 consumer-1
my-topic 1 2 3 1 consumer-1-029af89c-873c-4751-a720-cefd41a669d6 /127.0.0.1 consumer-1
my-topic 2 2 3 1 consumer-2-42c1abd4-e3b2-425d-a8bb-e1ea49b29bb2 /127.0.0.1 consumer-2
疑问:CONSUMER-ID是怎么来的?有2个consumer-1开头一个consumer-2开头的
如果消费者线程数大于分区数,有消费者线程空置
有1个分区,2个消费者
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
test 0 1 1 0 consumer-1-a59a7d10-a8d0-4140-8807-ca374213f316 /127.0.0.1 consumer-1
- - - - - consumer-1-fb81ff35-6854-437b-bc1f-51429642c241 /127.0.0.1
2).ZooKeeper形式
这个工具也适用于基于ZooKeeper的 consumer:
> bin/kafka-consumer-groups.sh --zookeeper localhost:2181 --describe --group my-group
注意:这只会显示关于使用ZooKeeper的 consumer 的信息(不是那些使用Java consumer API的消费者)。
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID
my-topic 0 2 4 2 my-group_consumer-1
my-topic 1 2 3 1 my-group_consumer-1
my-topic 2 2 3 1 my-group_consumer-2
1)重置至earliest
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group DemoConsumer --topic topic1 --reset-offsets --to-earliest --execute
–execute 必须带,否则虽然打印的信息一致,但是实际没有替换offset
[root@EMS3 kafka_2.11-1.0.0]# bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group DemoConsumer --topic topic1 --reset-offsets --to-earliest --execute
Note: This will not show information about old Zookeeper-based consumers.
TOPIC PARTITION NEW-OFFSET
topic1 0 0
假设某消费进度如下,已经消费2条消息,并且是队列尾
CURRENT-OFFSET | LOG-END-OFFSET | LAG |
---|---|---|
2 | 2 | 0 |
重置后结果:尚未消费,跳至消息队列头
CURRENT-OFFSET | LOG-END-OFFSET | LAG |
---|---|---|
0 | 2 | 2 |
2)重置至latest
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group DemoConsumer --topic topic1 --reset-offsets --to-latest --execute
[root@EMS3 kafka_2.11-1.0.0]# bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group DemoConsumer --topic topic1 --reset-offsets --to-latest --execute
Note: This will not show information about old Zookeeper-based consumers.
TOPIC PARTITION NEW-OFFSET
topic1 0 2
假设某消费进度如下,尚未消费,并且消息队列已经有2个数据
CURRENT-OFFSET | LOG-END-OFFSET | LAG |
---|---|---|
0 | 2 | 2 |
重置后结果:消费2个数据,并且是消息队列尾
CURRENT-OFFSET | LOG-END-OFFSET | LAG |
---|---|---|
2 | 2 | 0 |
3)跳至指定的offset
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group DemoConsumer --topic topic1 --reset-offsets --to-offset 0 --execute
细节就不贴出来了,就是跳至指定位置