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

Java Apache Kafka VirtualBox:将数据从VM流式传输到主机PC,导致连接到节点时出错,java,apache-kafka,virtualbox,Java,Apache Kafka,Virtualbox,我最近开始使用ApacheKafka,并在Windows10和我的LinuxMint19.3(VM)环境中成功地将数据从生产者发送到消费者。现在,我想将数据从我的VM流式传输到我的Windows 10环境 这两种环境都能够相互ping 当我尝试在Windows 10上运行我的使用者时,我得到一个“连接到节点VM VirtualBox:9092时出错”,后面跟着一个“java.net.UnknownHostException:VM VirtualBox”。奇怪的是,Windows10能够看到VM环

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

这两种环境都能够相互ping

当我尝试在Windows 10上运行我的使用者时,我得到一个“连接到节点VM VirtualBox:9092时出错”,后面跟着一个“java.net.UnknownHostException:VM VirtualBox”。奇怪的是,Windows10能够看到VM环境中列出的主题;我可以从Windows创建和删除主题。但我就是无法连接

有人能指出我做错了什么吗

My server.properties包括以下行:

broker.id=0
Kafka Broker高级配置
片段(安全阀)
#############################套接字服务器设置#############################
#套接字服务器侦听的地址。它将从中获取返回的值
#java.net.InetAddress.getCanonicalHostName()如果未配置。
#格式:
#侦听器=侦听器_name://host_name:port
#例如:
#listeners=PLAINTEXT://your.host.name:9092
#端口=9092
#播发的.host.name=localhost
listeners=PLAINTEXT://0.0.0.0:9092
advised.listeners=PLAINTEXT://VM VirtualBox:9092
#advised.listeners=PLAINTEXT://Windows10-7950:9092

域:9092
如果Kafka在主机上运行,则需要公布主机名,或VM可以解析的某个地址(也可以是IP地址)

否则,您需要在操作系统中编辑主机文件,以便可以识别DNS名称


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

此外,在VM端,我有Zookeeper和Kafka服务器在运行。以及一个producer Python应用程序,它向主题发送随机字符。我已经在Linux Mint中测试了该程序,数据能够流式传输到消费者终端。我想补充一点,如果我取消注释“adverted.listeners=PLAINTEXT://Widows10-7950:9092”,然后在Windows 10上运行kafka-console-consumer.bat命令,我会得到以下错误:获取相关id为2的元数据时出错:{Coordinates=LEADER\u NOT\u AVAILABLE}(org.apache.kafka.clients.NetworkClient)我觉得从虚拟机到主机PC的数据流传输应该是一个简单的过程,但我已经在这方面坚持了两天。如果有人能指出我的错误,那将非常感谢。只是想澄清一下,在虚拟机方面,它的server.properties有一行“advised.listeners=PLAINTEXT://VM VirtualBox:9092”。在Windows 10端,我是否应该将同一行添加到其server.properties文件中,但将主机名更改为VM VirtualBox?感谢您的回复!谢谢!这是一个端口转发问题。我正在虚拟机上使用桥接连接。当虚拟机处于活动状态时,我进入文件->首选项和网络。添加了新的NAT。在端口转发规则中,我将Windows IP地址作为主机IP,VM作为来宾IP,并为端口2181和9092创建了两个条目。在VM的server.property文件中,我修改为rules和simplyadded listeners=PLAINTEXT://0.0.0.0:9092 advised.listeners=PLAINTEXT://Windows10-7950:9092。现在一切正常了!谢谢!VM需要公布其外部IP…如果您需要的话d在端口上,您只需公布
localhost
。如果您没有在windows上运行Kafka代理,则不要触摸其属性文件。
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners = PLAINTEXT://EXTERNAL-HOST:9092