У разделов Kafka есть лидеры-брокеры без подходящего слушателя - PullRequest
0 голосов
/ 01 декабря 2018

Я пытаюсь заставить Кафку работать над docker-compose в первый раз.Приложение работает без докера.Но на докере я получаю ошибку, как описано ниже.Любая причина, по которой Кафка выдаст эту ошибку?

Ошибка:

email-service_1 |2018-12-01 14: 32: 02.448 ПРЕДУПРЕЖДЕНИЕ 1 --- [ntainer # 0-0-C-1] oakcNetworkClient: [Consumer clientId = consumer-2, groupId = kafka] 1 разделы имеют посредников-лидеров без соответствующего слушателя,включая [email-token-0]

Моя конфигурация docker-compose:

version: '3.3'
    services:
     zookeeper:
      image: wurstmeister/zookeeper
      ports:
       - "2181:2181"

 kafka:
  image: wurstmeister/kafka
  command: [start-kafka.sh]
  environment:
   KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
   KAFKA_ADVERTISED_HOST_NAME: 192.168.23.134
   KAFKA_CREATE_TOPICS: "email-token:1:1"
  volumes:
   - /var/run/docker.sock:/var/run/docker.sock
  ports:
   - "9092:9092"
  depends_on:
   - zookeeper

 email-service:
  build: ./email-service
  environment:
   SPRING_KAFKA_BOOTSTRAPSERVERS: kafka:9092
  ports:
   - "8081:8081"
  depends_on:
   - kafka

1 Ответ

0 голосов
/ 03 декабря 2018

Как отмечается в комментариях к вашему вопросу, проблема, похоже, связана с объявленным именем брокера Kafka.Согласно вашему docker-compose вы должны использовать 192.168.23.134, но ваш почтовый сервис использует kafka:9092.Вы можете попробовать с этим docker-compose.Я заменил сервисы wurstmeister на новейшие Zookeeper и Kafka, предоставленные confluentinc, и добавил ваш почтовый сервис.

---
version: '2'
services:
zookeeper:
    image: confluentinc/cp-zookeeper:latest
    environment:
    ZOOKEEPER_CLIENT_PORT: 2181
    ZOOKEEPER_TICK_TIME: 2000

kafka:
    image: confluentinc/cp-kafka:latest
    depends_on:
    - zookeeper
    ports:
    - 9092:9092
    environment:
    KAFKA_BROKER_ID: 1
    KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092
    KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
    KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
    KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1

email-service:
  build: ./email-service
  environment:
   SPRING_KAFKA_BOOTSTRAPSERVERS: kafka:29092
  ports:
   - "8081:8081"
  depends_on:
   - kafka

advertised.listeners : прослушиватели для публикации в ZooKeeper для использования клиентами, если они отличаются от свойства конфигурации прослушивателей.В средах IaaS это может отличаться от интерфейса, с которым связывается брокер.Если это не установлено, будет использоваться значение для слушателей.В отличие от слушателей недопустимо объявлять мета-адрес 0.0.0.0.

Обратите внимание, что KAFKA_ADVERTISED_HOST_NAME устарел, и вместо него рекомендуется использовать KAFKA_ADVERTISED_LISTENERS.Для получения дополнительной информации о KAFKA_ADVERTISED_LISTENERS проверьте здесь .

...