Kafka3.0.0版本——消费者(自动提交 offset)

目录

一、自动提交offset的相关参数

  • 官网文档

  • 参数解释

    参数 描述
    enable.auto.commi 默认值为 true,消费者会自动周期性地向服务器提交偏移量。
    auto.commit.interval.ms 如果设置了 enable.auto.commit 的值为 true, 则该值定义了消费者偏移量向 Kafka 提交的频率,默认 5s。
  • 图解分析

二、消费者(自动提交 offset)代码示例

  • 消费者自动提交 offset代码

    java 复制代码
    // 自动提交
    properties.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG,true);
    // 提交时间间隔 1秒
    properties.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG,1000);
  • 消费者自动提交 offset代码完整代码

    java 复制代码
    package com.xz.kafka.consumer;
    
    import org.apache.kafka.clients.consumer.ConsumerConfig;
    import org.apache.kafka.clients.consumer.ConsumerRecord;
    import org.apache.kafka.clients.consumer.ConsumerRecords;
    import org.apache.kafka.clients.consumer.KafkaConsumer;
    import org.apache.kafka.common.serialization.StringDeserializer;
    
    import java.time.Duration;
    import java.util.ArrayList;
    import java.util.Properties;
    
    public class CustomConsumerAutoOffset {
    
        public static void main(String[] args) {
    
            // 配置
            Properties properties = new Properties();
    
            // 连接 bootstrap.servers
            properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG,"192.168.136.27:9092,192.168.136.28:9092,192.168.136.29:9092");
    
            // 反序列化
            properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
            properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
    
            // 配置消费者组id
            properties.put(ConsumerConfig.GROUP_ID_CONFIG,"test3");
    
            // 自动提交
            properties.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG,true);
    
            // 提交时间间隔 1秒
            properties.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG,1000);
    
            // 1 创建一个消费者  "", "hello"
            KafkaConsumer<String, String> kafkaConsumer = new KafkaConsumer<>(properties);
    
            // 2 订阅主题 first
            ArrayList<String> topics = new ArrayList<>();
            topics.add("sevenTopic");
            kafkaConsumer.subscribe(topics);
    
            // 3 消费数据
            while (true){
    
                ConsumerRecords<String, String> consumerRecords = kafkaConsumer.poll(Duration.ofSeconds(1));
    
                for (ConsumerRecord<String, String> consumerRecord : consumerRecords) {
                    System.out.println(consumerRecord);
                }
            }
        }
    }
相关推荐
heimeiyingwang15 小时前
【架构实战】Kafka深度实战:从消息队列到流处理平台
架构·kafka·linq
青云计划17 小时前
kafka从入门到精通
kafka
倒流时光三十年17 小时前
第9篇 消息不丢:三端协同防丢失方案
spring boot·kafka
明明跟你说过1 天前
Kafka 与 Elasticsearch 的集成应用案例深度解析
大数据·elk·elasticsearch·kafka·big data·bigdata
lifewange1 天前
Nginx + Kafka 可编程精细控制 完整版(可直接落地运行)
运维·nginx·kafka
数据库小学妹2 天前
CDC实时数据同步:让数据库变更秒级流向大数据平台!
大数据·数据库·mysql·kafka·dba
虎头金猫2 天前
Beszel 轻量服务器监控:多台服务器状态统一看,搭起来比 Prometheus 省事太多
linux·运维·服务器·分布式·kafka·开源·prometheus
liux35282 天前
Kafka 4.1.1 生产环境调优与最佳实践指南
数据库·分布式·kafka
Devin~Y2 天前
大厂Java面试实录:Spring Boot + JVM + Redis/Kafka + 微服务治理 + Spring AI/RAG 一条龙
java·jvm·spring boot·redis·spring cloud·kafka·openfeign
老码观察2 天前
数环通消息中间件选型实录:RocketMQ vs Kafka vs RabbitMQ,我们为什么选了RocketMQ
kafka·rabbitmq·rocketmq