Правильно ли использовать потребительский пул Kafka? - PullRequest
0 голосов
/ 04 марта 2019

Время от времени мне нужно читать записи из определенного раздела с определенным смещением той же темы.

Я могу создавать нового потребителя кафки каждый раз.Однако я могу создать пул потребителей и использовать его следующим образом:

List<KafkaConsumer> consumers = new ArrayList<>();

// acquire consumer
KafkaConsumer consumer = consumers.get(0);
TopicPartition topicPartition = new TopicPartition("my-topic", 42);
consumer.assign(List.of(topicPartition));
consumer.seek(topicPartition, 13);

ConsumerRecords records = consumer.poll(0);
// process records
// .....

// release consumer
consumer.unsubscribe();

Должен ли я создать пул потребителей?Или это не эффективно, и я должен создать нового потребителя для каждого использования.

1 Ответ

0 голосов
/ 05 марта 2019

Вам нужен только один потребитель.Просто отмените подписку и переназначьте ее другому TopicPartition.

String topic = "my-topic";
int partition = 42;
int offset = 13;
boolean running = true;

while(running) {
    TopicPartition topicPartition = new TopicPartition(topic, partition);
    consumer.assign(List.of(topicPartition));
    consumer.seek(topicPartition, offset);

    ConsumerRecords records = consumer.poll(0);
    // process records
    // .....

    // release consumer
    consumer.unsubscribe();
    // Change topic, partition, offset as needed
}
...