docker - Quarkus Kafka Docker 网络属性
问题描述
我们的问题是内部属性 kafka.bootstrap.servers 不会被 kafka:9092 覆盖。我们的容器仍然尝试访问 localhost:9092。
我们在 docker-compose.yml 文件中为每个微服务的环境设置为: environment: - 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 | }
解决方案
您需要KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
,因为您不能将 localhost 通告给同一网络中的其他容器。正如错误所说,消费者容器正在尝试与自身连接,而不是 Kafka 容器。
但是,您需要验证命令中的覆盖标志是否正确设置了属性
推荐阅读
- sql - 我有两个查询要优化,它们在生产中运行很长时间。我已经使用了表中存在的所有可能的索引。有什么建议么?
- linux - 无法在 Linux Mint 中安装 Jmeter 插件管理器
- vue.js - 如何使用 Vue js 获取选项标签的 value 属性的值?
- google-chrome-extension - Chrome 扩展在页面操作中显示弹出窗口
- java - 在 JPQL 中查找具有最多关系的实体
- java - 是否应该将模型列表放在另一个模型中?
- java - SWT Combo 的自动完成提案
- jquery - 当我单击悬停菜单时,jquery 向上滑动功能不起作用
- c++ - 减去 n 次 int 值
- android - 获取开关小部件切换按钮的坐标