как получить имя топи c динамически, а затем прочитать с него - PullRequest
1 голос
/ 04 марта 2020

У меня есть сценарий, в котором мне нужно динамически читать имена topi c. Есть ли способ получить имена всех тем в домене, а затем прочитать сообщения от них одно за другим?

     @KafkaListener(groupId="something")
     someMethod(List<topics> topics){
        switchTo(topics.get(0)){
          read messages}
        switchTo(topics.get(1)){
          read messages}
       ...
       ...
       ...
     }

Ответы [ 3 ]

1 голос
/ 04 марта 2020

Все, что вам нужно, это listTopics от AdminClient:

Properties properties = new Properties();
properties.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, "kafka-host:9092");

AdminClient adminClient = AdminClient.create(properties);

System.out.println(adminClient.listTopics(new ListTopicsOptions()).names().get());
0 голосов
/ 04 марта 2020

Kafka Consumer может подписаться на шаблон регулярных выражений ...

Если вам нужно указать c logi c на основе имени топи c, я бы предложил вам создать отдельные методы или приложения для этих случаев использования и укажите имя в @KafkaListener аннотации

0 голосов
/ 04 марта 2020

Если вы можете использовать Kafka AdminClient, он предоставляет пару перегрузок для метода listTopics, чтобы получить информацию обо всех темах в кластере. См. Здесь для справки: https://kafka.apache.org/24/javadoc/index.html?org / apache / kafka / clients / admin / AdminClient. html

...