我很难弄清楚为什么我的制作人(来自Docker之外)无法在Docker中连接到Kafka。这是码头工人的作文
services:
zookeeper:
image: 'arm64v8/zookeeper:latest'
container_name: zookeeper
ports:
- '2181:2181'
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
networks:
- my_network
kafka:
image: 'wurstmeister/kafka:2.13-2.8.1'
container_name: kafka
ports:
- '29092:29092'
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://0.0.0.0:29092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
ALLOW_PLAINTEXT_LISTENER: yes
KAFKA_AUTO_CREATE_TOPICS_ENABLE: false
KAFKA_CREATE_TOPICS: 'events:1:1'
depends_on:
- zookeeper
networks:
- my_network
我尝试使用代理URL进行连接
localhost:29092
从主机。我希望它能起作用,因为:
-
卡夫卡集装箱暴露了那个港口
-
卡夫卡听众包括
PLAINTEXT_HOST://0.0.0.0:29092
然而,我从我的应用程序中得到了这个错误:
拨号tcp 127.0.0.1:9092:连接:连接被拒绝
我试着直接运行kafka cli:
$ kafka-console-producer --broker-list localhost:29092 --topic events
没有错误。但当我试图产生一个信息时,它不起作用:
> Hi KAFKA!
WARN [Producer clientId=console-producer] Connection to node 1 (kafka/127.0.0.1:9092)
could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)