【问题标题】:Quarkus Kafka Docker Network Property [duplicate]Quarkus Kafka Docker 网络属性 [重复]
【发布时间】:2021-06-02 20:27:10
【问题描述】:

我们的问题是内部属性 kafka.bootstrap.servers 不会被 kafka:9092 覆盖。 我们的容器仍然尝试访问 localhost:9092。

我们在 docker-compose.yml 文件中为每个微服务的环境设置了: 环境: - kafka.bootstrap.servers=kafka:9092 每个MS的属性也一样

有没有办法覆盖这个属性?

编辑: docker-compose.yml 文件的重要部分:

services:  
zookeeper:
    image: strimzi/kafka:0.19.0-kafka-2.5.0
    command:
      ["sh", "-c", "bin/zookeeper-server-start.sh config/zookeeper.properties"]
    ports:
      - "2181:2181"
    environment:
      LOG_DIR: /tmp/logs

  kafka:
    image: strimzi/kafka:0.19.0-kafka-2.5.0
    command:
      [
        "sh",
        "-c",
        "bin/kafka-server-start.sh config/server.properties --override listeners=$${KAFKA_LISTENERS} --override advertised.listeners=$${KAFKA_ADVERTISED_LISTENERS} --override zookeeper.connect=$${KAFKA_ZOOKEEPER_CONNECT}",
      ]
    depends_on:
      - zookeeper
    ports:
      - "9092:9092"
    environment:
      LOG_DIR: "/tmp/logs"
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
  authentication-service:
    build:
      context: implementation/authentication
      dockerfile: src/main/docker/Dockerfile.jvm
    environment:
      - quarkus.mongodb.connection-string=mongodb://mongodb:27017
      - KAFKA_BOOTSTRAP_SERVERS=kafka:9092
    container_name: authentication-service-ase
    depends_on:
      - mongodb
      - kafka

我们不断遇到的错误是:

cart-service-ase              |
cart-service-ase              | {
cart-service-ase              |     "timestamp": "2021-06-02 12:19:48",
cart-service-ase              |     "sequence": 378,
cart-service-ase              |     "loggerClassName": "org.apache.kafka.common.utils.LogContext$LocationAwareKafkaLogger",
cart-service-ase              |     "loggerName": "org.apache.kafka.clients.NetworkClient",
cart-service-ase              |     "level": "WARN",
cart-service-ase              |     "message": "[Consumer clientId=kafka-consumer-checkout-out, groupId=cart] Connection to node 0 (localhost/127.0.0.1:9092) could not be established. Broker may not be available.",
cart-service-ase              |     "threadName": "vert.x-kafka-consumer-thread-1",
cart-service-ase              |     "threadId": 38,
cart-service-ase              |     "mdc": {
cart-service-ase              |     },
cart-service-ase              |     "ndc": "",
cart-service-ase              |     "hostName": "34e4de1e7647",
cart-service-ase              |     "processName": "quarkus-run.jar",
cart-service-ase              |     "processId": 1
cart-service-ase              | }

【问题讨论】:

  • edit问题并包括docker-compose.yml的(相关部分)。
  • 而不是kafka.bootstrap.servers,尝试使用KAFKA_BOOTSTRAP_SERVERS
  • 仍然收到相同的错误提示:消息:[Consumer clientId=kafka-consumer-register-out, groupId=cart] Connection to node 0 (localhost/127.0.0.1:9092) could not be建立.经纪人可能不可用
  • 你试过KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092吗?
  • 你会把它放在哪里?因为我们在kafka下已经有了: environment: KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092

标签: docker apache-kafka quarkus


【解决方案1】:

您需要KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,因为您不能将 localhost 通告给同一网络中的其他容器。正如错误所说,消费者容器正在尝试连接自身,而不是 Kafka 容器。

但是,您需要验证命令中的覆盖标志是否正确设置了属性

【讨论】:

  • 非常感谢,你是我的英雄!就是那一行:PLAINTEXT://localhost:9092
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-28
  • 1970-01-01
  • 1970-01-01
  • 2018-11-19
  • 2019-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多