Использование нескольких тем кафки в одном классе потребителей - PullRequest
0 голосов
/ 08 мая 2019

У меня есть проект весенней загрузки, и я подключился к базовому центру событий kafka.

Мне нужно послушать 2 разные темы в одном классе потребителей.У меня есть два подхода для этого.

Один из них состоит в том, чтобы иметь двух слушателей kafka, таких как:

 @KafkaListener(topics = "topic1")
public void consumeTopic1(String message) throws Exception {  
   //do something
  }

 @KafkaListener(topics = "topic2")
public void consumeTopic2(String message) throws Exception {  
   //do something
  }

Другой подход состоит в том, чтобы иметь две темы в одном и том же kafkaListener, подобном этому

 @KafkaListener(topics = {"topic1", "topic2"})
public void consumeTopics(String message) throws Exception {  
   //do something
  }

Поскольку я новичок в kafka, я не уверен, в чем разница между этими двумя подходами.Какой из них эффективен и эффективен с точки зрения ресурсов.

Одна вещь, которая меня интересует, заключается в том, чтобы он слушал обе темы в одном потоке в обоих подходах или порождал бы каждый поток для прослушивания этих тем.

Используя подход 1, у меня возникли проблемы с потребителем, когда я вижу некоторые задержки в потреблении тем.

Пожалуйста, предложите мне, основываясь на вашем опыте, так как я довольно новичок в kafka

=============== EDIT ======== Свойства Kafka находятся в application.yml следующим образом:

 kafka:
    properties:
      topics:
        topic1: topic1
        topic2: topic2
    bootstrap-servers: server1,server2
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
      retries: 4
    consumer:
      group-id: mygroupid
      auto-offset-reset: latest
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer

1 Ответ

0 голосов
/ 08 мая 2019
  • Целью создания нескольких тем является распространение данных, а затем
    обработка данных по нескольким
    ядрам / процессам / потокам.

  • Даже в этом случае вы можете начать с одного потребителя для нескольких тем, пока не будет обнаружена задержка при обработке событий в очереди.Тогда вы можете выделить их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...