KafkaConsumer 0.10 Java API error message: No current assignment for partition

后端 未结 3 904
攒了一身酷
攒了一身酷 2020-12-05 07:59

I am using KafkaConsumer 0.10 Java api. I want to consume from a specific partition and specific offset. I looked up and found that there is a seek method but its throwing a

3条回答
  •  误落风尘
    2020-12-05 08:30

    If you do not want to use poll() and retrieve map records, and change the offset itself. Kafka version 0.11 Try this:

    ...
    props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");    
    KafkaConsumer consumer = new KafkaConsumer<>(props);    
    consumer.subscribe(Arrays.asList("Test_topic1", "Test_topic2"));
    List partitions =consumer.partitionsFor("Test_topic1").stream().map(part->{TopicPartition tp = new TopicPartition(part.topic(),part.partition()); return tp;}).collect(Collectors.toList());
    Field coordinatorField = consumer.getClass().getDeclaredField("coordinator"); 
    coordinatorField.setAccessible(true);    
    
    ConsumerCoordinator coordinator = (ConsumerCoordinator)coordinatorField.get(consumer);
    coordinator.poll(new Date().getTime(), 1000);//Watch out for your local date and time settings
    consumer.seekToBeginning(partitions); //or other seek
    

    Poll for coordinator events. This ensures that the coordinator is known and that the consumer has joined the group (if it is using group management). This also handles periodic offset commits if they are enabled.

提交回复
热议问题