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

在WSL上运行Kafka并在windows上制作producer

井镜
2023-03-14

我在WSL上运行Kafka。我正试图像这样做一个简单的生产者(我用的是intellj)

import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.common.serialization.StringSerializer;

import java.util.Properties;

public class ProducerDemo {

    public static void main(String[] args) {

        String bootstrapServers = "127.0.0.1:9092";

        //create Producer properties
        Properties properties = new Properties();
        properties.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,bootstrapServers);
        properties.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
        properties.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,StringSerializer.class.getName());

        //create the producer
        KafkaProducer<String,String> producer = new KafkaProducer<String, String>(properties);

        //create a producer record
        ProducerRecord<String,String> record =
                new ProducerRecord<String, String>("first_topic","hallo world");

        //send data
        producer.send(record);

        //flush + close
        producer.flush();
        producer.close();
    }

}

但是有一个问题,当我尝试运行代码时,它会显示此错误

[kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Error connecting to node AD17-2.localdomain:9092 (id: 0 rack: null)
java.net.UnknownHostException: No such host is known (AD17-2.localdomain)
    at java.base/java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at java.base/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(InetAddress.java:932)
    at java.base/java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1505)
    at java.base/java.net.InetAddress$NameServiceAddresses.get(InetAddress.java:851)
    at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1495)
    at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1354)
    at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1288)
    at org.apache.kafka.clients.ClientUtils.resolve(ClientUtils.java:110)
    at org.apache.kafka.clients.ClusterConnectionStates$NodeConnectionState.currentAddress(ClusterConnectionStates.java:403)
    at org.apache.kafka.clients.ClusterConnectionStates$NodeConnectionState.access$200(ClusterConnectionStates.java:363)
    at org.apache.kafka.clients.ClusterConnectionStates.currentAddress(ClusterConnectionStates.java:151)
    at org.apache.kafka.clients.NetworkClient.initiateConnect(NetworkClient.java:955)
    at org.apache.kafka.clients.NetworkClient.ready(NetworkClient.java:293)
    at org.apache.kafka.clients.producer.internals.Sender.sendProducerData(Sender.java:350)
    at org.apache.kafka.clients.producer.internals.Sender.runOnce(Sender.java:323)
    at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:239)
    at java.base/java.lang.Thread.run(Thread.java:832)

Process finished with exit code -1

我甚至检查了我窗户上的端口

TCP    0.0.0.0:9092           0.0.0.0:0              LISTENING

我的问题是,在windows和WSL上运行kafka时,是否不可能制作制片人?

共有2个答案

霍书
2023-03-14

它适用于我这个解决方案:命令:“ip addr |grep eth0“ 在 Ubuntu 终端上我可以获取外部接口 IP,我在 advertised.listener 上设置了这个 IP,并使用以下命令:

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

在Windows cmd上,我可以转发端口。使用命令“netstat -ab”,我可以在Windows cmd上看到IP和端口TCP 0.0.0.0:9092。它工作正常!在WSL 2(Ubuntu Distribution)上运行Kafka Confluent平台,在Windows上运行Spring应用程序(Broker可能不可用)

弓举
2023-03-14

您的Kafka代理在其通告的侦听器中使用本地主机名(AD17-2.localdomain)。当您的客户端最初在127.0.0.1:9092连接到它时,代理会返回此地址以便它连接到以生成消息。您的生产者无法解析此地址,并且失败了。

要修复它,请在代理的server.properties集中

advertised.listeners=PLAINTEXT://127.0.0.1:9092
listener.security.protocol.map=PLAINTEXT:PLAINTEXT
listeners=PLAINTEXT://0.0.0.0:9092

更多信息: https://rmoff.net/2018/08/02/kafka-listeners-explained/

 类似资料:
  • 我正在Ubuntu WSL2上成功运行最新的Kafka。我可以在WSL上运行的Ubuntu中启动zookeeper、kafka服务器、创建主题、控制台制作和控制台消费。然而,当我进入Windows上的Intellij并创建一个简单的Java生成器时,它似乎无法连接到代理 版本 服务器属性我在另一个SO答案中找到了此设置,但这些设置对我不起作用。 然后尝试(并重新启动动物园管理员和Kafka) 生产

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

  • 我正在尝试在WSL(Linux的Windows子系统)上使用WebAssembly和Emscripten。正在尝试从命令行运行示例html文件会导致错误: 如何在Linux系统(Ubuntu)上从WSL命令行访问主机(windows)浏览器?

  • 我在Ubuntu上使用bash运行最新的稳定窗口,通过cmder wslbridge运行(我尝试直接通过bash运行,但错误相同)。移动到基于windows的react-native文件夹并尝试运行一些cli,如、、总是产生错误; 而令人惊讶的是,其他一些命令如npm可以正常启动... 国家预防机制将其打印出来;

  • 我正在尝试从ECS中提取图像。我从WSL2Ubuntu20.04命令行执行此操作,我已经在docker桌面上安装了基于WSL2的引擎。然后我有一个错误:映像操作系统“windows”不能在这个平台上使用。我做了一些研究,找到的解决方案是“切换到windows容器”,但现在我遇到了一个新问题,无法在发行版中运行docker:“在这个WSL 2发行版中找不到命令‘docker’。我们建议在docker