kafka之auto-offset-reset

官方文档解释

auto.offset.reset: What to do when there is no initial offset in Kafka or if the current offset does not exist any more on the server (e.g. because that data has been deleted):
earliest: automatically reset the offset to the earliest offset
latest: automatically reset the offset to the latest offset
none: throw exception to the consumer if no previous offset is found for the consumer's group
anything else: throw exception to the consumer.

官方文档说得很清楚了:kafka中没有offset时,不论是什么原因,offset没了,这是auto.offset.reset配置就会起作用,

  • earliest:从最早的offset开始消费,就是partition的起始位置开始消费
  • latest:从最近的offset开始消费,就是新加入partition的消息才会被消费
  • none:报错
    测试
    最容易测试的方式就是在partition中预存放一些消息,然后新建一个consum group来消费这个partition。

测试步骤:创建两个不同组的消费者,分别设置为earliest和latest

预先生产10条消息
启动两个消费者,观察消息获取
在不关闭消费者的情况下,继续生产10条消息
观察消息获取
第一步写入消息

@Autowired
private KafkaTemplate kafkaTemplate;

@Test
void sendMsg() {
    for (int i = 0; i < 10; i++) {
        kafkaTemplate.send("test", "message" + i);
    }
}

第二步创建、启动消费者
创建两个消费者consumer1(earliest)、consumer2(lastest),分别启动后观察到consumer1消费到10条消息,consumer2消费到0条消息

consumer1: partitions assigned: [test-0]
message0
message1
message2
message3
message4
message5
message6
message7
message8
message9
consumer2: partitions assigned: [test-0]

第三步继续生产消息
可以观察到两个消费者都消费了新的10条消息

message10
message11
message12
message13
message14
message15
message16
message17
message18
message19

第四步消费者关闭,再生产10条消息,启动消费者
此时在kafka服务器已经记录了消费者的offset,重启后两个消费者都从记录中的offset开始消费

message20
message21
message22
message23
message24
message25
message26
message27
message28
message29

总结
如果kafka服务器记录有消费者消费到的offset,那么消费者会从该offset开始消费
如果由于某些offset记录丢失了,此时auto-offset-reset就起了作用,earlist从头开始消费,latest从最新生产的消息开始消费

作者:陆阳226
链接:https://www.jianshu.com/p/2e0e682f77dd

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容

  • 官方文档解释 auto.offset.reset: What to do when there is no ini...
    陆阳226阅读 10,717评论 0 1
  • 消息中间件的背景分析 场景分析 前面跟着我看过 zk 的源码,学过并发编程的同学应该知道,我们可以使用阻塞队列+线...
    悠娜的奶爸阅读 284评论 0 2
  • 什么是Kafka Kafka是一款分布式消息发布和订阅系统,它的特点是高性能、高吞吐量。 最早设计的目的是作为Li...
    WEIJAVA阅读 8,443评论 4 76
  • 什么是Kafka[#---kafka] Kafka的应用场景[#kafka-----] Kafka的架构[#kaf...
    PENG先森_晓宇阅读 4,851评论 4 91
  • 应用程序使用 KafkaConsumer向 Kafka 订阅 Topic 接收消息,首先理解 Kafka 中消费者...
    Alex90阅读 44,517评论 2 15