Apache Kafka VirtualBox:将数据从 VM 流式传输到主机 PC 导致连接到节点时出错

Apache Kafka VirtualBox: Streaming data from VM to Host PC resulting in error connecting to node

我最近开始使用 Apache Kafka,并在 Windows 10 和我的 Linux Mint 19.3 (VM) 环境中成功地将数据从生产者发送到消费者。现在我想将数据从我的 VM 流式传输到我的 Windows 10 环境。

两个环境都能互相ping通。

当我在 Windows 10 上尝试 运行 我的消费者时,我得到一个 "Error connecting to node VM-VirtualBox:9092'",然后是一个 "java.net.UnknownHostException: VM-VirtualBox"。奇怪的是,Windows10能够看到VM环境中列出的主题;我可以从 Windows 创建和删除主题。但是就是连接不上。

有人可以指出我做错了什么吗?

我的 server.properties 包括行:

broker.id=0
Kafka Broker Advanced Configuration
Snippet (Safety Valve)
############################# Socket Server Settings #############################
# The address the socket server listens on. It will get the value returned from
# java.net.InetAddress.getCanonicalHostName() if not configured.
# FORMAT:
# listeners = listener_name://host_name:port
# EXAMPLE:
# listeners = PLAINTEXT://your.host.name:9092
#port=9092
#advertised.host.name=localhost
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners = PLAINTEXT://VM-VirtualBox:9092
#advertised.listeners = PLAINTEXT://Windows10-7950:9092
domain:9092

我也在 Reddit 上发布了这个:https://www.reddit.com/r/apachekafka/comments/emqbms/virtualbox_streaming_data_from_vm_to_host_pc/

如果 Kafka 在主机上 运行,您需要通告主机的主机名,或者 VM 可以解析的某个地址(也可以是 IP 地址)

listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners = PLAINTEXT://EXTERNAL-HOST:9092

否则,您需要编辑 OS 中的主机文件,以便识别 DNS​​ 名称

您可以列出和创建主题的原因是您可能正在使用 Zookeeper,而不是 bootstrap 地址