java整合kafka做消息消费

1. 导入依赖

<!--kafka 3.2.0,版本根据自己kafka服务端版本选择-->
<dependency>
	<groupId>org.apache.kafka</groupId>
	<artifactId>kafka-clients</artifactId>
	<version>3.2.0</version>
</dependency>

2.demo代码

public static void main(String[] args) {

        Properties properties = new Properties();
        //borker地址
        properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG,"192.168.3.107: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,"group1");
        //earliest:offset偏移至最早时候开始消费;latest:偏移到从最新开始消费(默认)
        properties.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG,"earliest");		
        //每批次最小拉取数据大小,默认1byte
        properties.put(ConsumerConfig.FETCH_MIN_BYTES_CONFIG,1);
        //每批次最大拉取数据大小,默认50M
        properties.put(ConsumerConfig.FETCH_MAX_BYTES_CONFIG,50 * 1024 * 1024);
        //一批次数据,未达到最小数据大小时候,最大等待时间.默认500ms
        properties.put(ConsumerConfig.FETCH_MAX_WAIT_MS_CONFIG,500);
        //单次调用 poll() 返回的最大记录数,默认500
        properties.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG,500);
        KafkaConsumer kafkaConsumer = new KafkaConsumer(properties);
        //A.设置要订阅的topic 列表
//        List<String> topicList = new ArrayList<>();
//        topicList.add("test1");
//        kafkaConsumer.subscribe(topicList);
        //B.指定订阅那个topic下那个分区的数据(我就只有一个分区,就不演示了)
        List<TopicPartition> topicPartitions = new ArrayList<>();
        topicPartitions.add(new TopicPartition("test1",0));
        kafkaConsumer.assign(topicPartitions);
        while (true){
            ConsumerRecords<String,String> records = kafkaConsumer.poll(Duration.ofSeconds(2L));
            for (ConsumerRecord<String,String> record : records) {
                System.out.println("消费数据。topic"+record.topic()+"|partition:"+record.partition()+"|数据:"+record.value());
            }
        }
    }
2.1 消费者组

消费者组id必须指定,id名称可以根据自己业务需要指定
在这里插入图片描述

2.2 offset设置
  • 如果你先开启消费者等待消费,然后再开启生产者投递消息。那么因为默认的策略是latest的,投递的消息就是最新的,可以全部消费到。
  • 如果先进行生产者消息投递,然后再开启消费者消费。因为默认的策略从最新的偏移量开始消费,此时会出现消费不到历史消息。(如果需要消费到历史消息,那么可以将该参数设置为earliest,从最早位置开始消费消息)
    在这里插入图片描述
2.3 指定分区消费

A方式,只要是test1这个topic的所有消息都可以消费到;如果需要指定消费某个topic下的某个分区消息,可以使用B方式
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值