【Kafka】Kafka入门之JavaAPI(Consumer)
【Kafka】Kafka入门之JavaAPI(Consumer)
接着上次的博客Producer继续分享,这次我们简单使用一下JavaApi 开发 Consumer
环境什么的,可以看一下我的上一篇博客
既然Producer有KafkaProducer,那么就应该有KafkaConsumer,我们照样搜一下
同样的,继承自 Consumer , 和 KafkaProducer 继承自 Producer 大同小异
既然Producer官方为我们提供了模板,Consumer肯定也不例外
模板代码大概在 197 - 210 行左右,我们复制(注意,这里代码为了转义,并不是正常代码,所以需要自行替换)
同样的,我们修改一下主机名和主题名即可使用,如下??
Consumer
Producer
首先,我们要知道,消费者默认每次开启的时候都是从最新的offset开始读取的,所以如果我们先开启Producer,然后再开启Consumer,因为Producer只会生产10条数据,很快就生产完并发送到Kafka集群,这时候我们开启Consumer是消费不了数据的,所以,那该怎么办呢?
有两个解决方式:
方式1:先开启Consumer,再开启Producer,效果如下图??
方式2:设置 auto.offset.reset 属性为 earliest,并且消费者组第一次消费该Topic,这样就能从头开始消费数据,效果如下图??
现在我们看一下 auto.offset.reset 这个参数, auto.offset.reset,默认值是 latest
源码如下图??
所以我们得出的结论:消费者要从头开始消费某个topic的全量数据,需要满足2个条件:
(1)使用一个全新的"group.id"(就是之前没有被任何消费者使用过)
(2)指定"auto.offset.reset"参数的值为earliest
所以一定要在消费者启动之前就保证group.id是全新的,而且要指定earliest而不是latest,才能让消费者从头消费数据
【Kafka】Kafka入门之JavaAPI(Consumer)相关教程