Zei*_*man 5 apache-kafka docker kafka-producer-api
我在 Windows 机器上本地运行 kafka。我运行 kafka 的方式是使用
.\bin\windows\kafka-server-start.bat .\config\server.properties
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
我正在使用 docker 运行 kafkacat
docker run -it --network="host" --name="producer" confluentinc/cp-kafkacat bash
Run Code Online (Sandbox Code Playgroud)
当我跑
kafkacat -b host.docker.internal:9092 -C -t test
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:
% 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)
Run Code Online (Sandbox Code Playgroud)
我知道我可以在 docker 中运行 Kafka,但我想知道为什么我无法连接到代理并生成或使用消息。我尝试了不同的方法并试图了解听众在做什么,但我无法理解为什么这不起作用。
当我做
kafkacat -b host.docker.internal:9092 -t test -L
Run Code Online (Sandbox Code Playgroud)
我得到
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
Run Code Online (Sandbox Code Playgroud)
也许有人可以解释我做错了什么或告诉我为什么这是不可能的。
我下载了最新版本的 Kafka:kafka-2.4 Machine is Windows 10 Docker for Windows running using Linux containers
您需要设置host.docker.internal:9092为广告监听器。不是本地主机/127.0.0.1
这是客户端尝试连接时将返回的地址
当你这样做时,你应该能够看到这个
1 brokers:
broker 0 at host.docker.internal:9092
Run Code Online (Sandbox Code Playgroud)
否则,正如您所知,引导连接有效,但广告地址将是 127.0.0.1 才能到达该特定代理,这显然不起作用,因为那将是 kafkacat 容器本身
注意:--network="host"在 Linux 主机之外不会执行您期望的操作,因此您最好将其删除
| 归档时间: |
|
| 查看次数: |
1457 次 |
| 最近记录: |