kafka java 小记录

本文章 方便日后查看使用。

创建kafka消费者(此处没啥可讲的,看注释吧。 手动版本的,更加灵活)

复制代码
    public KafkaConsumer<String, String> getCustomer() {
        // 1. 配置属性参数
        Properties properties = new Properties();

        // 设置Kafka集群的地址和端口,消费者将连接到这个地址和端口
        properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");

        // 设置键(Key)的反序列化器为StringDeserializer,用于将字节数据转换为String类型
        properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
        // 设置值(Value)的反序列化器为StringDeserializer,用于将字节数据转换为String类型
        properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());

        // 设置消费者所属的消费者组,消费者组内的消费者将共同消费同一个Topic的消息
        properties.put(ConsumerConfig.GROUP_ID_CONFIG, "test-group");
        // 设置消费者与Kafka集群之间的会话超时时间(单位:毫秒)
        properties.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, 10000);
        // 设置消费者是否自动提交offset,true表示自动提交
        properties.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, true);
        // 设置自动提交offset的时间间隔(单位:毫秒)
        properties.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, 5000);
        // 设置每次poll操作返回的最大记录数
        properties.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG,5);

        // 根据配置属性创建Kafka消费者实例
        return new KafkaConsumer<>(properties);
    }

使用kafka开始消费

复制代码
    @Test
    void KafkaConsumerTest() {
        KafkaConsumer<String, String> consumer = kafkaNdpiCustomer.getCustomer();

        // 订阅要消费的主题,这里是 "test Topic"
        consumer.subscribe(Collections.singletonList("test-Topic"));


        ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(1000));
        for (ConsumerRecord<String, String> record : records) {
                // 处理消息的逻辑
                System.out.printf("消息为:offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());
//                boolean flag = true;
//                if (flag){
//                    consumer.commitAsync();
//                    break;
//                }
        }
        consumer.close();
        System.out.println("结束消费");
    }

其中 consumer.commitAsync(); 为异步提交,不选择则不会像kafka报告已经消费,可以重复使用,

相关推荐
Monly212 小时前
RabbitMQ:数据隔离
分布式·rabbitmq
在努力的前端小白3 小时前
Spring Boot 敏感词过滤组件实现:基于DFA算法的高效敏感词检测与替换
java·数据库·spring boot·文本处理·敏感词过滤·dfa算法·组件开发
萧鼎5 小时前
Python pyzmq 库详解:从入门到高性能分布式通信
开发语言·分布式·python
一叶飘零_sweeeet6 小时前
从繁琐到优雅:Java Lambda 表达式全解析与实战指南
java·lambda·java8
纪莫6 小时前
Kafka如何保证「消息不丢失」,「顺序传输」,「不重复消费」,以及为什么会发送重平衡(reblanace)
kafka
艾伦~耶格尔6 小时前
【集合框架LinkedList底层添加元素机制】
java·开发语言·学习·面试
一只叫煤球的猫7 小时前
🕰 一个案例带你彻底搞懂延迟双删
java·后端·面试
最初的↘那颗心7 小时前
Flink Stream API 源码走读 - print()
java·大数据·hadoop·flink·实时计算
JH30737 小时前
Maven的三种项目打包方式——pom,jar,war的区别
java·maven·jar
带刺的坐椅8 小时前
轻量级流程编排框架,Solon Flow v3.5.0 发布
java·solon·workflow·flow·solon-flow