Search code examples
dockerapache-kafkaspring-cloudspring-kafkaspring-cloud-stream

How to change target of the Spring Cloud Stream Kafka binder?


Using Spring cloud Stream 2.1.4 with Spring Boot 2.1.10, I'm trying to target a local instance of Kafka. This is an extract of my projetc configuation so far:

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

But the binder keeps on calling a wrong target :

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

How can can I specify the target if those properties won't do he trick? More, I deploy the Kafka instance through a Docker Bitnami image and I'd prefer not to use SSL configuration (see PLAINTEXT protocol) but I'm don't find properties for basic credentials login. Does anyone know if this is hopeless?

This is my 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

Thanks in advance


Solution

  • All right: got this to work by looking twice to the "dockerfile" (thx to cricket_007):

    kafka:
    ...
        hostname: localhost
    

    For the record: I could get rid of all properties above, default being for Kafka localhost:9092