Kafka java Producer - 无法建立与 localhost:9092 的连接

时间:2021-06-17 14:36:32

标签: java apache-kafka

我正在玩 Kafka for Java 教程。我编写了以下代码:

制作人类

public class ProducerDemo {
    static String bootstrapServers = "127.0.0.1:9092";

    public static void main(String[] args) {

        // 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 producer
        KafkaProducer<String, String> producer = new KafkaProducer<>(properties);

        // create ProducerRecord
        ProducerRecord<String, String> record = new ProducerRecord<>("first_topic", "hello world!");

        // send data
        producer.send(record);

        producer.close();
    }
}

Gradle 文件

plugins {
    id 'java'
}

group 'com.greem666.kafka'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'

    compileOnly 'org.projectlombok:lombok:1.18.20'
    annotationProcessor 'org.projectlombok:lombok:1.18.20'

    testCompileOnly 'org.projectlombok:lombok:1.18.20'
    testAnnotationProcessor 'org.projectlombok:lombok:1.18.20'

    implementation group: 'org.apache.kafka', name: 'kafka-clients', version: '2.8.0'

    implementation group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.30'
}

我有一个 kafka_2.13-2.8.0 Zookeeper 和一个 Broker,在同一台 Win10 机器上的 WSL2 实例中运行。在 WSL2 中尝试使用控制台消费者和控制台生产者时,一切正常。

然而,当我尝试运行上面的 Java 类时,我得到了这个:

Java 日志

[main] INFO org.apache.kafka.common.utils.AppInfoParser - Kafka version: 2.8.0
[main] INFO org.apache.kafka.common.utils.AppInfoParser - Kafka commitId: ebb1d6e21cc92130
[main] INFO org.apache.kafka.common.utils.AppInfoParser - Kafka startTimeMs: 1623940023993
[kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Connection to node -1 (/127.0.0.1:9092) could not be established. Broker may not be available.
[kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Bootstrap broker 127.0.0.1:9092 (id: -1 rack: null) disconnected

任何想法为什么会发生这种情况?是否与在 WSL2 中运行的 Kafka Zookeeper 和 Broker 有关?

1 个答案:

答案 0 :(得分:0)

您需要在 WSL2 中运行您的代码,或者您需要设置一个从管理程序到 Windows 本地网络适配器的端口转发,以便 127.0.0.1localhost 工作(假设您没有t 修改任何主机文件)