Как изменить цель связки Spring Cloud Stream Kafka? - PullRequest
0 голосов
/ 08 ноября 2019

Используя Spring cloud Stream 2.1.4 с Spring Boot 2.1.10, я пытаюсь настроить таргетинг на локальный экземпляр Kafka. Пока это фрагмент моей конфигурации projetc:

spring.kafka.bootstrap-servers=PLAINTEXT://localhost:9092
spring.kafka.streams.bootstrap-servers=PLAINTEXT://localhost:9092
spring.cloud.stream.kafka.binder.brokers=PLAINTEXT://localhost:9092
spring.cloud.stream.kafka.binder.zkNodes=localhost:2181
spring.cloud.stream.kafka.streams.binder.brokers=PLAINTEXT://localhost:9092
spring.cloud.stream.kafka.streams.binder.zkNodes=localhost:2181

Но связыватель продолжает вызывать неверную цель:

java.io.IOException: Can't resolve address: kafka.example.com:9092

Как я могу указать цель, если эти свойства выигралион трюк? Более того, я развертываю экземпляр Kafka с помощью образа Docker Bitnami и предпочитаю не использовать конфигурацию SSL (см. Протокол PLAINTEXT), но я не нахожу свойства для входа в систему с базовыми учетными данными. Кто-нибудь знает, если это безнадежно?

Это мой docker-compose.yml

version: '3'
services: 
  zookeeper:
    image: bitnami/zookeeper:latest
    container_name: zookeeper
    environment:
      - ZOO_ENABLE_AUTH=yes
      - ZOO_SERVER_USERS=kafka
      - ZOO_SERVER_PASSWORDS=kafka_password
    networks:
      - kafka-net
  kafka:
    image: bitnami/kafka:latest
    container_name: kafka
    hostname: kafka.example.com
    depends_on:
      - zookeeper
    ports:
      - 9092:9092
    environment:
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://:9092
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - KAFKA_ZOOKEEPER_USER=kafka
      - KAFKA_ZOOKEEPER_PASSWORD=kafka_password
    networks:
      - kafka-net
networks:
  kafka-net:
    driver: bridge

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 08 ноября 2019

hostname не является проблемой, как правило, рекламируемое отображение прослушивателей protocol//:port, которое приводит к объявлению имени хоста, по умолчанию. Вы должны изменить это, а не имя хоста.

  kafka:
    image: bitnami/kafka:latest
    container_name: kafka
    hostname: kafka.example.com # <--- Here's what you are getting in the request
    ...
    environment:
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://:9092 # <--- This returns the hostname to the clients

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

Год спустя мой комментарий все еще не был объединен с битами README , где я смог настроить его на работу со следующими переменными (измененными в соответствии с вашим развертыванием)

KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_CFG_LISTENERS=PLAINTEXT://:29092,PLAINTEXT_HOST://:9092
KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka.example.com:29092,PLAINTEXT_HOST://localhost:9092
0 голосов
/ 08 ноября 2019

Хорошо: чтобы это сработало, дважды посмотрев на «файл докера» (thx to cricket_007):

kafka:
...
    hostname: localhost

Для справки: я мог бы избавиться от всех свойств, указанных выше, по умолчанию для Kafkaлокальный: 9092

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