kafka消费者如何才能从头开始消费某个topic的全量_kafkaspring配置项从头消费-程序员宅基地

技术标签: 大数据  

 消费者要从头开始消费某个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。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/liuyuinsdu/article/details/114757975

智能推荐

生产计划管理软件有哪些?哪个好_生产计划执行管理有什么目的和意义-程序员宅基地

文章浏览阅读3.6k次。生产计划管理软件有哪些?哪个好?生产计划管理,一般是指企业对生产活动的计划、组织和控制工作。生产计划管理软件可提高生产效率、提升品质、降低成本等。对企业管理意义深远。​生产计划管理软件介绍:MES制造执行系统​MES系统是一套面向制造企业车间执行层的生产信息化管理系统。是生产工业常见的生产管理软件,他可以为企业提供包括制造数据管理、计划生产调度管理、库存管理以及质量管理,同时还有人力资源管理..._生产计划执行管理有什么目的和意义

vue播放flv格式视频_vue flv-程序员宅基地

文章浏览阅读4.7k次,点赞3次,收藏11次。vue播放flv视频_vue flv

JPBC库的使用实例——BLS签名_it.unisa.dia.gas.jpbc.element-程序员宅基地

文章浏览阅读1.5k次。这里展示了一个简单的对JPBC库的调用的实例。可以参考JPBC库的官方文档进行学习:http://gas.dia.unisa.it/projects/jpbc/docs/ecpg.html#TypeAimport it.unisa.dia.gas.jpbc.Element;import it.unisa.dia.gas.jpbc.Field;import it.unisa.dia.gas.jpbc.Pairing;import it.unisa.dia.gas.jpbc.PairingParam_it.unisa.dia.gas.jpbc.element

【Emmylua】lua的debug无效果connect localhost:9966 ... Connection refused: connect,pycharm使用Emmylua无法连接_try connect localhost:9966 ... connection refused:-程序员宅基地

文章浏览阅读2.1k次。Try connect localhost:9966 ...Connection refused: connectunity执行了,就会把端口占用掉,所以pycharm的debug那里就会断开了。然后打开的时候没注意,unity开启了A工程文件,pycharm开启了B工程文件。你可能会注意到每次播放unity的时候,debug工具都会自动断开一次连接。我赶紧改成unity开启了A工程文件,_try connect localhost:9966 ... connection refused: connect

git clone后,在本地切换到远程仓库的非master分支_tortoisegit 克隆后的仓库为什么不是是master分支-程序员宅基地

文章浏览阅读1.7k次,点赞2次,收藏4次。简 述: 因为有一个需求, 在github上面的仓库有两个分支(master和markdown),且两个分支的内容完全不相同,现在需要另外一台电脑上面,克隆下来本地仓库,且同时能够在两个分支上面都进行不同的开发文章目录下面为自己的仓库为示范:下面为自己的仓库为示范:git clone远程仓库拷贝到本地仓库:git clone [email protected]:touwoyimuli/t..._tortoisegit 克隆后的仓库为什么不是是master分支

include封装的公共header,切换页面时如何保持正确的选中状态(多页面之间切换)_include :: header-程序员宅基地

文章浏览阅读560次。1、前端页面2、jq方法//$(function(){}) 页面加载后执行,这样才能获取到标签内容$(function(){ var urlstr = location.href; //当前浏览器地址 var urlstatus = false;//定义状态值 //循环导航a标签 $("#clearfix a").each(function(key) { console.log(urlstr); ..._include :: header

随便推点

使用LL库开发STM32:UART进阶使用(DMA循环接收 + UART空闲中断)_stm32 ll uart-程序员宅基地

文章浏览阅读5.1k次,点赞10次,收藏20次。文章目录目的发送处理问题与解决方法个人常用处理方式数据接收与解析总结目的发送处理问题与解决方法个人常用处理方式数据接收与解析总结_stm32 ll uart

Android UI线程和非UI线程_android在ui线程-程序员宅基地

文章浏览阅读3.7k次,点赞2次,收藏9次。UI线程及Android的单线程模型原则  当应用启动,系统会创建一个主线程(main thread)。  这个主线程负责向UI组件分发事件(包括绘制事件),也是在这个主线程里,你的应用和Android的UI组件(components from the Android UI toolkit (components from the android.widget andandroid.vie_android在ui线程

C++:opencv 人脸检测_c++ opencv十字检测-程序员宅基地

文章浏览阅读2.1k次,点赞3次,收藏19次。C++:opencv 人脸检测问题描述:要求输入一张图片;输出圈出人脸的图片;vs2015; opencv3.4.6;效果输入:输出:代码实现:#include "opencv2/objdetect.hpp"#include "opencv2/highgui.hpp"#include "opencv2/imgproc.hpp"#include <iostrea..._c++ opencv十字检测

CentOS增加IP地址的全面指南_centos追加ip-程序员宅基地

文章浏览阅读455次,点赞9次,收藏8次。在Linux服务器管理中,有时需要在不重启网络服务的情况下为网卡添加额外的IP地址。这一过程涉及到对网络配置文件的编辑和命令行工具的使用。下面是详细的步骤说明以及相关实例。_centos追加ip

hdu 5322 Hope 分治 NTT_hdu5322 ntt-程序员宅基地

文章浏览阅读453次。设f[i]f[i] 表示长度为i时的答案,那么 f[i]=∑i=1nCj−1i−1∗f[i−j]∗(j−1)!∗j2f[i]=\sum\limits_{i=1}^{n}C_{i-1}^{j-1}*f[i-j]*(j-1)!*j^2 然后这个东西直接分治fft就行了。 推错式子害死人。。。#include using namespace std;#define_hdu5322 ntt

vue单页面 全屏 使用 screenfull 实现全屏(左侧菜单栏隐藏)_vue在打开一个界面的时候隐藏侧边栏-程序员宅基地

文章浏览阅读1.4k次。vue单页面 全屏 使用 screenfull 实现全屏(左侧菜单栏隐藏)_vue在打开一个界面的时候隐藏侧边栏