Kafka消费者同步和异步的JavaAPI代码演示

本文介绍了Kafka消费者的Java API,包括新版API的特点,如何设置从特定offset开始消费,以及自动和手动提交偏移量的方法。重点讲解了自动提交通过设置`enable.auto.commit`和`auto.commit.interval.ms`,以及手动提交的异步`commitAsync()`和同步`commitSync()`操作。在实际应用中,通常选择异步提交以提高性能。
摘要由CSDN通过智能技术生成

API文档
http://kafka.apache.org/10/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaConsumer.html.

版本说明
消费者API也分为新版和旧版

开发中都是直接使用新版本API:
org.apache.kafka.clients.consumer.KafkaConsumer

注意:

1.旧版:有两个级别的API:

  • 低级/底层:可以手动维护offset

  • 高级/高层:自动维护offset

http://kafka.apache.org/0100/documentation.html#impl_consumer.

2.新版:直接将旧版的低阶和高阶整合了,不再区分,可以手动维护offset也可以自动维护offset。

从哪个offset开始消费

1.旧版API:offset保存在ZK中,通过参数指定

  • auto.offset.reset 的值为smallest:表示从分区的最小offset开始消费,类似与命令行消费时的 --from-beginning
  • auto.offset.reset 的值为largest:表示从分区的最大offset开始消费,也就是从最新的数据开始消费,类似命令行消费时的 不加–from-beginning

2.新版API:offset存储在默认主题__consumer_offsets中,通过参数指定

  • auto.offset.reset 的值为earliest :当各分区下有已提交的 Offset 时,从提交的 Offset开始消费;无提交的Offset 时,从最小/最早/最开始的数据开始消费;
  • auto.offset.reset 的值为latest : 当各分区下有已提交的 Offset 时,从提交的 Offset 开始消费;无提交的 Offset时,从最大/最新/最后的数据开始消费
  • auto.offset.reset 的值为none : Topic 各分区都存在已提交的 Offset 时,从 Offset 后开始消费;只要有一个分区不存在已提交的 Offset,则抛出异常。


如何提交偏移量

1.自动提交—一般都是用自动提交

  • enable.auto.commit设置为true 表示自动提交(老版本提交到ZK,新版本提交到默认主题__consumer_offsets中)
  • auto.commit.interval.ms设置一个自动提交offset的时间间隔

2.手动提交–对数据要求较高或想要精确控制时用手动提交!

  • enable.auto.commit设置为false表示需要手动提交偏移量

  • consumer.commitAsync();//异步提交

  • consumer.commitSync()//同步提交

导入Maven依赖

    <dependencies>
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-streams</artifactId>
            <version>1.0.0</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!-- java编译插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</art
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值