kafka一些常用命令,以及如何查看消息被谁消费了
环境说明:我们的kafka版本是:查看kafka版本,进入kafka容器:find / -name \*kafka_\* | head -1 | grep -o '\kafka[^\n]*'kafka_2.11-2.2.1前面为scala版本,后面为kafka版本。样例说明:2.11为scala版本,2.2.1为kafka版本。我的kafka容器名是kafka;注意:不同kafka版本的命令有些不
环境说明:
我们的kafka版本是:查看kafka版本,进入kafka容器:find / -name \*kafka_\* | head -1 | grep -o '\kafka[^\n]*'
kafka_2.11-2.2.1
前面为scala版本,后面为kafka版本。
样例说明:2.11为scala版本,2.2.1为kafka版本。
我的kafka容器名是 kafka;
注意:
不同kafka版本的命令有些不一样,有的还用zookeeper的那种命令,注意下就可以了;
命令整理:
进入kafka容器
docker exec -it kafka /bin/bash
也可以这样
docker exec -it kafka bash
进入kafka默认目录
cd /opt/kafka
我们的目录是在这里:
一般常用的操作就是这些bin目录下的命令了;
问题整理:
问题一:
在项目开发过程中,测试环境的kafka是可以被其他人消费的,包括我本地启动服务也是可以消费的。
这样在测试过程中,就不能保证消息被测试环境的服务消费了,
若是其他人的分支和测试环境分支代码不一致,他们消费后就会导致功能最后的结果不是我们想要的,
所以就需要找到是谁消费了这个消息【具体是哪个同学的ip】;
因此需要用到kafka中bin目录下的一些命令:
我的查找过程:因为我们是运行在docker中的,因此同一个命令有两种查询方式
【查看group列表】
docker exec -it kafka kafka-consumer-groups.sh --bootstrap-server XXXXXX:9092 --list
或者进去kafka的bin目录,直接用命令操作
docker exec -it kafka bash
cd /opt/bitnami/kafka/bin/
./kafka-consumer-groups.sh --bootstrap-server XXXXXX:9092 --list
结果就是会列出所有的组,这里要看你们代码中用到哪个组,
yml文件中:kafka:consumer:group-id:组名字
【查看group消费情况】
docker exec -it kafka kafka-consumer-groups.sh --bootstrap-server XXXXX:9092 --group group名字 --describe
或者进去kafka的bin目录,直接用命令操作
docker exec -it kafka bash
cd /opt/bitnami/kafka/bin/
./kafka-consumer-groups.sh --bootstrap-server XXXXXX:9092 --group group名字 --describe
最后结果
GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
当前已消费的条数 总条数 未消费的条数
4 kzy-record-group wecom-chat-message-1 1 61 61 0 BATCH_CLIENT_1-82ec8469-0486-4aab-bf26-9c2a7dc10127 /xxx.xxx.xxx.x BATCH_CLIENT_1
5 kzy-record-group wecom-chat-message-1 3 115 115 0 BATCH_CLIENT_3-2952df8e-7dbe-4aa8-9133-d60963cd8707 /xxx.xxx.xxx.x BATCH_CLIENT_3
6 kzy-record-group wecom-chat-message-1 0 123 123 0 BATCH_CLIENT_0-f4f72233-dc0f-4e6c-80db-701fab3254e1 /xxx.xxx.xxx.x BATCH_CLIENT_0
7 kzy-record-group wecom-chat-message-1 2 148 148 0 BATCH_CLIENT_2-cb93e139-c3c3-4727-8156-dff1b95d0f56 /xxx.xxx.xxx.x BATCH_CLIENT_2
最后出来host列就会指向当前消费者的ip(当前消费的group成员id),我们的目的就达到了;
组的这两个命令其实也就是--list 和--describe这两个参数的运用;
当然还有其他命令,个人觉得这些没必要记,用的时候再百度,或者收藏我的文章(会不定期更新)上来看看就行了。
更多推荐
所有评论(0)