我正在尝试启动docker kafka并将其扩展到我的本地主机上。这是我最初的docker-compose.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”提出请求时,此方法非常有效。
显然,如果我使用搬运工-撰写规模卡夫卡= 3 I会因为在本地主机的端口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”,我的生产者由于超时而无法发送消息。这意味着入口点不是KAFKA_LISTENERS或KAFKA_ADVERTISED_LISTENERS。
java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.
如果使用我搬运工已绑定的端口(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
我认为KAFKA_LISTENERS和KAFKA_ADVERTISED_LISTENERS有点奇怪,但我找不到使它起作用的方法。
在我最后一次尝试我所做的:
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
但这并没有解决任何问题。 如果有人有主意,请告诉我。