Тема (ы) [test-topic-new] есть / отсутствуют, и значение missingTopicsFatal является истинным

#java #spring #spring-boot #apache-kafka #kafka-consumer-api

#java #весна #весенняя загрузка #apache-kafka #кафка-потребитель-api

Вопрос:

Я запускаю одну потребительскую службу на сервере (12.255.123.789). в кластере есть 3 сервера kafka (XX.XXX.XXX.123, XX.XXX.XXX.124, XX.XXX.XXX.125) и три сервера zookeeper (ГГГГ.ГГГГ.ГГГГ.123, ГГГГ.ГГГГ.ГГГГ.124, ГГГГ.ГГГГ.ГГГГ.125) запущены. Мои потребительские свойства

 spring.kafka.consumer.bootstrap-servers=XX.XXX.XXX.123:9092,XX.XXX.XXX.124:9092,XX.XXX.XXX.125:9092
spring.kafka.consumer.group-id: prod
#spring.kafka.consumer.auto-offset-reset: earliest
spring.kafka.consumer.auto-offset-reset: latest
spring.kafka.consumer.key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer: org.springframework.kafka.support.serializer.JsonSerializer
spring.kafka.listener.concurrency: 6
  

Я использовал эту команду для создания тем на сервере kafka(XX.XXX.XXX.123, XX.XXX.XXX.124, XX.XXX.XXX.125)

 bin/kafka-topics.sh --create --zookeeper YY.YYY.YYY.123:2181,YY.YYY.YYY.124:2181,YY.YYY.YYY.125:2181 --replication-factor 2 --partitions 1 --topic test-topic-new --config cleanup.policy=delete --config delete.retention.ms=60000
  

При запуске моей службы поддержки пользователей на сервере 12.255.123.789 у меня возникает исключение ниже —

 org.springframework.context.ApplicationContextException: Failed to start bean 'org.springframework.kafka.config.internalKafkaListenerEndpointRegistry'; nested exception is java.lang.IllegalStateException: Topic(s) [test-topic-new] is/are not present and missingTopicsFatal is true
  

Я делаю что-нибудь здесь?

Комментарии:

1. Проверьте, была ли создана ваша тема Kafka с использованием bin/kafka-topics.sh --list --zookeeper YY.YYY.YYY.123:2181 .

Ответ №1:

Связь между серверами kafka не была установлена. Вот почему приложению не удалось найти темы. Нам нужно установить один ведущий узел. После этого приложение работало без сбоев.

 advertised.listners=PLAINTEXT://<serverIP:port>