我们如何处理偏移损坏?
我想把偏移日志保存在其他地方,或者拍偏移的快照。我该怎么做?
Kafka将偏移量存储在名为_consumer_offset的主题中。使用者将偏移量提交到该主题中,auto.offset.reset的值(最早/最新/noe(决定了开始从分区读取消息的策略。偏移日志保留时间由broker属性指定。
CCD_ 1=>将从上次提交的偏移量开始读取消息,如果找不到,则将等待新消息到达并从那里开始。无异常抛出
CCD_ 2=>同样,它不会抛出任何异常,并且如果存在偏移,它将从头开始读取消息。
CCD_ 3=>当找不到偏移量时,它将抛出一个异常。
您可以使用assign and seek来获取特定的数据
//assign - set topic and partition you you want to read from using TopicPartion
TopicPartition topicPartitionToReadFrom = new
TopicPartition(topic, 0);
long offsetToReadFrom = 15L;
consumer.assign(Arrays.asList(topicPartitionToReadFrom));
//seek - set position of the consumer manually by calling
//KafkaConsumer.seek(TopicPartition partition, long offset)
consumer.seek(topicPartitionToReadFrom, offsetToReadFrom);
存储偏移日志=>_consumeroffset是主题,因此您可以为该主题编写一个consumer,并将消息存储到您选择的存储器中。