首页 技术 正文
技术 2022年11月16日
0 收藏 369 点赞 2,402 浏览 1261 个字

消费者要从头开始消费某个topic的全量数据,需要满足2个条件(spring-kafka):

(1)使用一个全新的"group.id"(就是之前没有被任何消费者使用过);(2)指定"auto.offset.reset"参数的值为earliest;

对应的spring-kafka消费者客户端配置参数为:

<!-- 指定消费组名 -->
<entry key="group.id" value="fg11"/>
<!-- 从何处开始消费,latest 表示消费最新消息,earliest 表示从头开始消费,none表示抛出异常,默认latest -->
<entry key="auto.offset.reset" value="earliest"/>

注意:从kafka-0.9版本及以后,kafka的消费者组和offset信息就不存zookeeper了,而是存到broker服务器上,所以,如果你为某个消费者指定了一个消费者组名称(group.id),那么,一旦这个消费者启动,这个消费者组名和它要消费的那个topic的offset信息就会被记录在broker服务器上。

比如我们为消费者A指定了消费者组(group.id)为fg11,那么可以使用如下命令查看消费者组的消费情况:

bin/kafka-consumer-groups.sh --bootstrap-server 172.17.6.10:9092 --describe --group fg11

显示结果如下:

TOPIC   PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG  CONSUMER-ID                                      HOST              CLIENT-ID 
friend 0 6 6 0 consumer-1-08c856a3-ae39-4f73-a2da-4de1795c6ad4 /192.168.207.127 consumer-1
friend 1 2 2 0 consumer-1-08c856a3-ae39-4f73-a2da-4de1795c6ad4 /192.168.207.127 consumer-1
friend 2 4 4 0 consumer-1-08c856a3-ae39-4f73-a2da-4de1795c6ad4 /192.168.207.127 consumer-1

其实friend这个topic共有3个分区,消息总数为12条,其实在消费者A启动之前,这12条消息已经被其他某个组的消费者消费过了。而我们虽然为消费者A指定了一个全新的group.id为fg11,但是如果我们在启动消费者A之前,指定的”auto.offset.reset”参数的值是latest而不是earliest的话(就算你停止消费者,然后改为earliest也是没有用的),启动之后它将不会消费以前的消息,除非friend这个topic的分区中有了新的消息它才会消费。

所以一定要在消费者启动之前就保证group.id是全新的,而且要指定earliest而不是latest。

如果觉得本文对您有帮助,不妨扫描下方微信二维码打赏点,您的鼓励是我前进最大的动力:

kafka消费者如何才能从头开始消费某个topic的全量数据

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,086
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,561
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,410
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,183
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,820
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,903