我无法通过运行在windows上的intellij或vscode连接到运行在ubuntu上的kafka服务器(我在wsl2上尝试的第一个服务器)。我甚至尝试使用虚拟机的ip,但没有运气。据我所知,我们应该能够连接使用'本地主机'根据这个文件https://docs.microsoft.com/en-us/windows/wsl/compare-versions 我错过什么了吗?
这是我的密码
Properties producerProperties = new Properties();
producerProperties.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
producerProperties.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
producerProperties.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
KafkaProducer<String, String> producer = new KafkaProducer<String, String>(producerProperties);
ProducerRecord<String, String> record = new ProducerRecord<>("topic_1", "hello from java");
producer.send(record);
producer.flush();
producer.close();
这里是错误
2条答案
按热度按时间bbmckpt71#
您需要将代码中的localhost替换为0.0.0.0(所有IP)
这样地:
producerProperties.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "0.0.0.0:9092");
这将在链接中的“其他网络注意事项”部分进行解释。wswtfjt72#
我也有同样的问题,很难解决。当我发现wsl2中的这个问题已关闭,但显然仍然存在问题时,取得了突破。基本上,我无法从Windows10中的intellij访问ubuntu/wsl2的本地主机。所以,当我用intellij编译和运行我的程序时,它给了我你发布的错误。
有关我的设置的一些详细信息:
操作系统:windows 10,版本2004(操作系统内部版本19041.630)
我的版本.sbt:
这是我尝试运行的scala代码,它读入一个主题(快速启动事件)并发布到另一个主题(辅助输出):
我已经运行程序很多次了,为了重新开始,我删除了zookeeper和kafkas/tmp文件。我不知道这些文件有多值钱,所以请小心处理。我删除了这三个目录:
/tmp/kafka日志
/tmp/Zookeeper
/tmp/kafka检查点(这是我在程序中设置的一个目录,你的可能不同,但是spark在我没有设置这个时抛出了一个错误)。
接下来,我在ubuntu的kafka目录下运行了这些命令。每个都在一个单独的终端窗口中。
我花了这段时间在producer(窗口3)中键入一些行,并在quickstart consumer(窗口4)中查找输出。aux out(窗口5)中不应显示任何内容,这将在sbt中运行程序时生成。
然后我运行我的程序。我没有从windows上移动我的项目,而是导航到ubuntu的windows目录(/mnt/c/user/me/lots/of/dir/kafkaproject)。我开始了
sbt
在目录中build.sbt
. 一次sbt
加载了“编译”和“运行”它开始像Spark作业一样处理,但随后文本开始飞过。这时您应该可以在aux out中看到来自quickstart topic output的输入。
当程序运行时,在窗口3的生产者中输入的文本应该显示在4和5中。
有一件事我没有提到,在尝试运行程序失败了几次之后,我确实做了一个“wsl.exe--shutdown”并重新启动了所有的窗口以获得一个干净的开始。如果出现错误,说明缺少主题,请尝试更改主题名称,然后重新开始。我发现有时我以前用过但不起作用的主题被破坏了。我相信还有其他一些临时文件,我还没有发现,是缓存的主题,但我移动了,一旦我得到它的工作。
祝你好运!