消费者代码实例

一.创建配置,最小化配置如下

var props = new Properties();
props.setProperty(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "127.0.0.1:9092");//broker地址
props.setProperty(ConsumerConfig.GROUP_ID_CONFIG, "group_id_1");//group id
props.setProperty(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");//key序列化器
props.setProperty(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");//value序列化器

二.生成KafkaConsumer
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);

三.订阅主题
1.订阅主题
consumer.subscribe(Arrays.asList("jc-kafka-1-topic-2"));
2.订阅主题分区
consumer.assign(Arrays.asList(new TopicPartition("jc-kafka-1-topic-2", 0)));

 

四.拉取消息

ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));

五.消费消息
for (ConsumerRecord<String, String> record : records) {
    System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());
}

六.提交消费位移
1.自动提交,自动提交不需要配置,或配置如下:
props.setProperty(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, "true");
props.setProperty(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, "1000");
2.手动提交
consumer.commitSync();//同步

consumer.commitAsync();//异步

七.指定位移消费

consumer.poll(Duration.ofMillis(100));//先调用poll分配到分许
consumer.seek(new TopicPartition("jc-kafka-1-topic-2", 0),10);//指定位移
ConsumerRecords<String, String> poll = consumer.poll(Duration.ofMillis(100));//调用poll拉取消息

也可以根据时间戳查询时间戳对应的偏移量,之后指定位移消费

Map<TopicPartition, OffsetAndTimestamp> offsets = consumer.offsetsForTimes(new HashMap<TopicPartition, Long>());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值