##查看某个消费者组所有消费者的消费状态
/kafka_2.12-1.1.1/bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group data-statistics-consumer-group --describe
##查看topic列表
/kafka_2.12-1.1.1/bin/kafka-topics.sh --zookeeper localhost:2181 --list
##创建一个topic并且指定分区和副本
/kafka_2.12-1.1.1/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
##删除指定的topic
/kafka_2.12-1.1.1/bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic test
##生产者
/kafka_2.12-1.1.1/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic diff_task
##消费者监控
/kafka_2.12-1.1.1/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic diff_task
##消费者消费消息
/kafka_2.12-1.1.1/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test
##更新topic的offset(需要关掉所有消费者)
/kafka_2.12-1.1.1/bin/kafka-consumer-groups --bootstrap-server localhost:9092 --group consumer_group --topic test_topic --execute --reset-offsets --to-latest
## 查询集群描述
/kafka_2.12-1.1.1/bin/kafka-topics.sh --describe --zookeeper localhost:2181
#从topic中消费消息
/kafka_2.12-1.1.1/bin/kafka-console-consumer.sh --topic customer --from-beginning --zookeeper master01:2181
kafka位移重新设置策略
Earliest 策略表示将位移调整到主题当前最早位移处。这个最早位移不一定就是 0,因为在生产环境中,很久远的消息会被 Kafka 自动删除,所以当前最早位移很可能是一个大于 0 的值。如果你想要重新消费主题的所有消息,那么可以使用 Earliest 策略。
bin/kafka-consumer-groups.sh --bootstrap-server kafka-host:port --group test-group --reset-offsets --all-topics --to-earliest –execute
Latest 策略表示把位移重设成最新末端位移。如果你总共向某个主题发送了 15 条消息,那么最新末端位移就是 15。如果你想跳过所有历史消息,打算从最新的消息处开始消费的话,可以使用 Latest 策略。
bin/kafka-consumer-groups.sh --bootstrap-server kafka-host:port --group test-group --reset-offsets --all-topics --to-latest --execute
Current 策略表示将位移调整成消费者当前提交的最新位移。有时候你可能会碰到这样的场景:你修改了消费者程序代码,并重启了消费者,结果发现代码有问题,你需要回滚之前的代码变更,同时也要把位移重设到消费者重启时的位置,那么,Current 策略就可以帮你实现这个功能。
bin/kafka-consumer-groups.sh --bootstrap-server kafka-host:port --group test-group --reset-offsets --all-topics --to-current --execute
Specified-Offset 策略则是比较通用的策略,表示消费者把位移值调整到你指定的位移处。这个策略的典型使用场景是,消费者程序在处理某条错误消息时,你可以手动地“跳过”此消息的处理。在实际使用过程中,可能会出现 corrupted 消息无法被消费的情形,此时消费者程序会抛出异常,无法继续工作。一旦碰到这个问题,你就可以尝试使用 Specified-Offset 策略来规避。
bin/kafka-consumer-groups.sh --bootstrap-server kafka-host:port --group test-group --reset-offsets --all-topics --to-offset <offset> --execute
Shift-By-N 策略指定的就是位移的相对数值,即你给出要跳过的一段消息的距离即可。这里的“跳”是双向的,你既可以向前“跳”,也可以向后“跳”。比如,你想把位移重设成当前位移的前 100 条位移处,此时你需要指定 N 为 -100。
bin/kafka-consumer-groups.sh --bootstrap-server kafka-host:port --group test-group --reset-offsets --shift-by <offset_N> --execute
DateTime 允许你指定一个时间,然后将位移重置到该时间之后的最早位移处。常见的使用场景是,你想重新消费昨天的数据,那么你可以使用该策略重设位移到昨天 0 点。
bin/kafka-consumer-groups.sh --bootstrap-server kafka-host:port --group test-group --reset-offsets --to-datetime 2019-06-20T20:00:00.000 --execute
Duration 策略则是指给定相对的时间间隔,然后将位移调整到距离当前给定时间间隔的位移处,具体格式是 PnDTnHnMnS。如果你熟悉 Java 8 引入的 Duration 类的话,你应该不会对这个格式感到陌生。它就是一个符合 ISO-8601 规范的 Duration 格式,以字母 P 开头,后面由 4 部分组成,即 D、H、M 和 S,分别表示天、小时、分钟和秒。举个例子,如果你想将位移调回到 15 分钟前,那么你就可以指定 PT0H15M0S。
bin/kafka-consumer-groups.sh --bootstrap-server kafka-host:port --group test-group --reset-offsets --by-duration PT0H30M0S --execute