当前位置: 首页 > 知识库问答 >
问题:

在 WSL 2 上运行Kafka融合平台(乌班图发行版)和在 Windows 上运行Spring应用程序(代理可能不可用)

羊舌源
2023-03-14

我在wsl 2(Ubuntu发行版)中运行Confluent Platform,也在Windows上运行一个Spring应用程序,但是当我用producer发送一条消息时,出现了以下错误:

无法建立与节点 -1(本地主机/127.0.0.1:9092)的连接。经纪人可能不可用。引导代理本地主机:9092 (id: -1 机架: 空) 断开连接

我看看这篇文章:https://www.confluent.io/blog/kafka-client-cannot-connect-to-broker-on-aws-on-docker-etc/https://forum.confluent.io/t/running-kafka-connect-sink-on-separate-machine-from-zookeeper-topic-non-localhost/3038https://www.confluent.io/blog/kafka-listeners-explained/

但是我找不到解决办法。

结论/等/Kafka/服务器属性文件中的配置是什么?

我设置了这个:

advertised . listeners = PLAINTEXT://127 . 0 . 0 . 1:9092 < br > listener . security . protocol . map = PLAINTEXT:PLAINTEXT < br > listeners = PLAINTEXT://0 . 0 . 0 . 0:9092

Kafka运行在“localhost:9092”上,在WSL2中,我可以正确地发送和读取消息,但它不能在Windows上运行我的spring boot应用程序。

我看到了这个答案,但它在我的localhost中不起作用:在WSL上运行Kafka,在windows上生成producer

我是否必须在 Windows 配置中更改某些内容?在 C:\Windows\系统 32\驱动程序\等\主机中?

您能建议如何解决此错误吗?提前致谢!

共有1个答案

郑承恩
2023-03-14

您需要在WSL2终端内使用ifconfig(或ip addr),找到其外部接口IP,然后将其用作通告的侦听器。

然后,您需要使用来自 Windows CMD 的 netsh 接口端口代理命令将端口从虚拟机管理程序转发到主机。这也假定侦听器 = 纯文本://0.0.0.0:9092

实例

netsh interface portproxy add v4tov4 listenport=9092 listenaddress=0.0.0.0 connectport=9092 connectaddress=XXX.XX.XX.XX 

其中XXX.XX.XX。XX是接口地址的IP

然后,从Windows环境连接到localhost请求转发到虚拟机监控程序,该程序将返回其公布的侦听器地址。

您还可以尝试直接使用虚拟机管理程序的IP,而不是本地主机/端口转发

或者您可以只使用Docker for Windows,运行Kafka并在那里配置侦听器,它会自己正确转发端口

 类似资料:
  • 我的应用程序在emulator上运行得很好,但当我导出后在我的智能手机(galaxy s3)上运行它时,它会在这个活动中崩溃,因为有HTTP连接!问题出在哪里?代码还是导出?当我点击连接按钮时,它崩溃了。

  • 这些天我正在学习微服务架构,我需要运行Kafka来遵循一些教程。然而,zookeeper-server-start在cmd上运行Kafka的第一步对我来说不起作用。它说“命令的语法不正确” 我遵循了下面的过程 > 下载kafka和extarct(https://kafka.apache.org/downloads-kafka2.11-2.1.0.tgz(二进制下载)) bin\windows\zo

  • 我已经在NetBeans中创建了一个Java项目,自动构建的分发文件(.jar)在我的Ubuntu15.04AMD64机器上运行得非常好。 我想在发布它之前确保它在windows上运行,但在windows 7 32位机器上测试后,我发现它不工作。下面是错误消息的屏幕截图。 我可以猜到一些问题--因为它谈到了一个。regex错误。我并没有在代码中真正使用regex,而是使用string.split。

  • 它可以在仿真器和真实设备(android版本4)上工作,但不能在真实设备(android版本7.0)上工作 相关代码: logcat: 05-23 10:31:39.464 173 42-17342/laftel.net.laftel E/AndroidRuntime:致命异常:主进程:laftel.net.laftel,pid:17342 java.lang.nullPointerExcepti

  • 我意识到这个问题(Windows容器可以托管在Linux上吗?),但它并没有真正回答我的问题。 我是Docker的新手,但我的问题是这样的--如果我把任何windows应用程序放在Docker容器中,它现在能在Linux上运行吗?反之亦然? Confluent声称它只能在linux上运行,但我的同事使用Docker在Windows上安装了它。所以如果你能用Docker安装它,那么整个应用程序肯定会