我正在尝试创建一个docker kafka,并在本地主机上扩展它。这是我最初的docker写作。yml:
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://127.0.0.1:9092
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
当我使用BOOTSTRAP_SERVERS_CONFIG=“PLAINTEXT://127.0.0.1:9092”进行请求时,这种方法非常有效。
显然,如果我使用docker compose scale kafka=3,我会得到一个错误,因为本地主机上的端口9092已经被使用。
根据文件:
https://github.com/wurstmeister/kafka-docker/wiki/Connectivity
,我试图像这样更改端口:
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9092"
environment:
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://127.0.0.1:9092
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
这样,如果我使用BOOTSTRAP_SERVERS_CONFIG=“PLAINTEXT://127.0.0.1:9092”请求,由于超时,我的制作人无法发送消息。这意味着切入点不是卡夫卡听众或卡夫卡听众。
java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.
如果我使用docker已绑定的端口(32001):BOOTSTRAP_SERVERS_CONFIG=“PLAINTEXT://127.0.0.1:32001”我在尝试发送消息时收到了不同的错误消息:
java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for demo-0:120001 ms has passed since batch creation
我想卡夫卡的听众和卡夫卡的听众有些奇怪,但我找不到一种方法来让它发挥作用。
在最后一次尝试中,我做到了:
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9093:9092"
environment:
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092 # or PLAINTEXT://0.0.0.0:9093
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://127.0.0.1:9092 # or PLAINTEXT://127.0.0.1:9093
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
但这并没有得到任何正确的结果。
如果有人有主意,请告诉我。