Kafka слушатель получает список> можно ли потреблять? - PullRequest
0 голосов
/ 25 января 2019

Я супер новичок в Кафке, и я, честно говоря, понятия не имею об этом типе потребителя (насколько я понял, так как срок поставки готов), поэтому я пытаюсь выяснить, как в основном использовать список этихevents.

У меня есть что-то вроде этого:

    @KafkaListener(topics = "#{'${kafka.listener.list-of-topics}'.split(',')}")
        public void readMessage(List<ConsumerRecord<String, String>> records,
                                   final Acknowledgment acknowledgment) {

            try {
....

Я знаю, что когда я получаю событие (по крайней мере, одно), имеет тип "MyObject", поэтому я могу делать это хорошо, когдаЯ получаю одно сообщение.

Я считаю, что должен быть способ прочитать / разыграть это List<ConsumerRecords<String,String>, но я не могу понять, как ...

какие-либо идеи?

1 Ответ

0 голосов
/ 25 января 2019

См. справочное руководство: Пакетные прослушиватели .

Начиная с версии 1.1, методы @KafkaListener можно настроить для получения всей партии записей о потребителях, полученных из опроса потребителей.,Чтобы настроить фабрику контейнера слушателей для создания слушателей пакетов, установите свойство batchListener:

@Bean
public KafkaListenerContainerFactory<?> batchFactory() {
    ConcurrentKafkaListenerContainerFactory<Integer, String> factory =
            new ConcurrentKafkaListenerContainerFactory<>();
    factory.setConsumerFactory(consumerFactory());
    factory.setBatchListener(true);  // <<<<<<<<<<<<<<<<<<<<<<<<<
    return factory;
}

...

Вы также можете получить список ConsumerRecord<?, ?>объекты, но это должен быть единственный параметр (кроме необязательного Acknowledgment, при использовании фиксации вручную и / или Consumer<?, ?> параметров), определенного в методе:

...

При использовании Spring Boot установите свойство spring.kafka.listener.type=batch.

...