簡體   English   中英

如何更改 Spring Cloud Stream Kafka binder 的目標?

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

使用 Spring 雲 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

如果這些屬性不會欺騙他,我該如何指定目標? 此外,我通過 Docker Bitnami 映像部署 Kafka 實例,我不想使用 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

提前致謝

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

一年后,我的評論仍未合並到 bitnami 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

好的:通過兩次查看“dockerfile”(感謝 cricket_007)來實現它:

kafka:
...
    hostname: localhost

作為記錄:我可以擺脫上面的所有屬性,默認為 Kafka localhost:9092

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM