package com.atguigu.kafka.consumer;
import org.apache.kafka.clients.consumer.*;
import org.apache.kafka.common.TopicPartition;
import org.apache.kafka.common.serialization.StringDeserializer;
import java.time.Duration;
import java.util.*;
public class CustomConsumerSeekTime {
public static void main(String[] args) {
// 0 配置信息
Properties properties = new Properties();
// 连接
properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG,"hadoop102:9092,hadoop103: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");
// 1 创建消费者
KafkaConsumer<String, String> kafkaConsumer = new KafkaConsumer<>(properties);
// 2 订阅主题
ArrayList<String> topics = new ArrayList<>();
topics.add("first");
kafkaConsumer.subscribe(topics);
// 指定位置进行消费
Set<TopicPartition> assignment = kafkaConsumer.assignment();
// 保证分区分配方案已经制定完毕
while (assignment.size() == 0){
kafkaConsumer.poll(Duration.ofSeconds(1));
assignment = kafkaConsumer.assignment();
}
// 希望把时间转换为对应的offset
HashMap<TopicPartition, Long> topicPartitionLongHashMap = new HashMap<>();
// 封装对应集合
for (TopicPartition topicPartition : assignment) {
topicPartitionLongHashMap.put(topicPartition,System.currentTimeMillis() - 1 * 24 * 3600 * 1000);
}
Map<TopicPartition, OffsetAndTimestamp> topicPartitionOffsetAndTimestampMap = kafkaConsumer.offsetsForTimes(topicPartitionLongHashMap);
// 指定消费的offset
for (TopicPartition topicPartition : assignment) {
OffsetAndTimestamp offsetAndTimestamp = topicPartitionOffsetAndTimestampMap.get(topicPartition);
kafkaConsumer.seek(topicPartition,offsetAndTimestamp.offset());
}
// 3 消费数据
while (true){
ConsumerRecords<String, String> consumerRecords = kafkaConsumer.poll(Duration.ofSeconds(1));
for (ConsumerRecord<String, String> consumerRecord : consumerRecords) {
System.out.println(consumerRecord);
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
kafka.zip (43个子文件)
kafka
pom.xml 788B
src
test
java
main
resources
java
com
atguigu
kafka
producer
CustomProducerSync.java 1KB
CustomProducer.java 1KB
CustomProducerParameters.java 2KB
CustomProducerCallback.java 2KB
CustomProducerTranactions.java 2KB
CustomProducerCallbackPartitions.java 2KB
MyPartitioner.java 767B
CustomProducerAcks.java 2KB
consumer
CustomConsumer1.java 2KB
CustomConsumer2.java 2KB
CustomConsumerSeekTime.java 3KB
CustomConsumerByHandSync.java 2KB
CustomConsumerSeek.java 2KB
CustomConsumer.java 2KB
CustomConsumerAutoOffset.java 2KB
CustomConsumerPartition.java 2KB
.idea
jarRepositories.xml 864B
codeStyles
codeStyleConfig.xml 153B
Project.xml 269B
workspace.xml 8KB
misc.xml 526B
compiler.xml 538B
.gitignore 223B
target
classes
com
atguigu
kafka
producer
CustomProducerCallback.class 2KB
CustomProducer.class 2KB
CustomProducerParameters.class 2KB
CustomProducerAcks.class 2KB
CustomProducerCallbackPartitions.class 2KB
CustomProducerTranactions.class 2KB
CustomProducerCallbackPartitions$1.class 1KB
CustomProducerCallback$1.class 1KB
MyPartitioner.class 1KB
CustomProducerSync.class 2KB
consumer
CustomConsumerSeek.class 3KB
CustomConsumer.class 3KB
CustomConsumerPartition.class 3KB
CustomConsumer2.class 3KB
CustomConsumer1.class 3KB
CustomConsumerByHandSync.class 3KB
CustomConsumerAutoOffset.class 3KB
CustomConsumerSeekTime.class 4KB
generated-sources
annotations
kafka.iml 81B
共 43 条
- 1
资源评论
向着百万年薪努力的小赵
- 粉丝: 1w+
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功