无法从在docker中运行的Kafkacat连接到在Windows计算机上本地运行的Kafka代理

问题描述 投票:0回答:1

我正在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

docker apache-kafka kafka-producer-api
1个回答
0
投票

您需要将host.docker.internal:9092设置为播发的侦听器。不是本地主机/ 127.0.0.1

这是尝试连接时将返回客户端的地址

[这样做时,您应该可以看到此内容

1 brokers:
  broker 0 at host.docker.internal:9092

否则,您可以知道,引导连接有效,但是到达该特定代理的广告地址将为127.0.0.1,显然不起作用,因为那将是kafkacat容器本身

注意:--network="host"在Linux主机之外无法实现您的期望,因此最好将其删除

© www.soinside.com 2019 - 2024. All rights reserved.