我在Windows计算机上本地运行kafka。我运行kafka的方式是使用
.\bin\windows\kafka-server-start.bat .\config\server.properties
server.properties是:
listeners=Listener_BOB://:29092,Listener_Kafkacat://127.0.0.1:9092
advertised.listeners=Listener_BOB://:29092,Listener_Kafkacat://127.0.0.1:9092
listener.security.protocol.map=Listener_BOB:PLAINTEXT,Listener_Kafkacat:PLAINTEXT
inter.broker.listener.name=Listener_BOB
我正在使用docker运行kafkacat
docker run -it --network="host" --name="producer" confluentinc/cp-kafkacat bash
我跑步时
kafkacat -b host.docker.internal:9092 -C -t test
我收到错误消息:
% ERROR: Local: Broker transport failure: 127.0.0.1:9092/0: Connect to ipv4#127.0.0.1:9092 failed: Connection refused (after 0ms in state CONNECT)
我知道我可以在docker中运行Kafka,但我想知道为什么我无法连接到代理并生成或使用消息。我尝试了不同的尝试,并试图了解听众的行为,但是我无法解决为什么它不起作用的问题。
我这样做
kafkacat -b host.docker.internal:9092 -t test -L
我知道
1 brokers:
broker 0 at 127.0.0.1:9092
1 topics:
topic "test" with 1 partitions:
partition 0, leader 0, replicas: 0, isrs: 0
也许有人可以解释我在做什么错,或者告诉我为什么这不可能。
我下载了最新版本的Kafka:kafka-2.4 机器是Windows 10 使用Linux容器运行的Windows版Docker
答案 0 :(得分:3)
您需要将host.docker.internal:9092
设置为公告的侦听器。不是localhost / 127.0.0.1
这是尝试连接时将返回客户端的地址
这样做时,您应该可以看到
1 brokers:
broker 0 at host.docker.internal:9092
否则,正如您所知,引导连接有效,但是到达该特定代理的广告地址将为127.0.0.1,这显然不起作用,因为那将是kafkacat容器本身
注意:--network="host"
在Linux主机之外无法达到您的预期,因此最好将其删除