【问题标题】:Kafka java Producer - Connection to localhost:9092 could not be establishedKafka java Producer - 无法建立到 localhost:9092 的连接
【发布时间】:2021-06-17 22:58:43
【问题描述】:

我正在玩 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 中使用控制台 Consumer 和控制台 Producer 时,一切正常。

但是,当我尝试运行上面的 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 有关?

【问题讨论】:

  • localhost127.0.0.1 不完全相同。您是否尝试过实际使用localhost
  • 是的,127.0.0.1:9092、localhost:9092 都试过了。当这些不起作用时,甚至尝试了 0.0.0.0:9092,但结果相同。

标签: java apache-kafka


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-07-22
    • 2021-03-15
    • 2016-08-01
    • 1970-01-01
    • 2019-12-02
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    相关资源
    最近更新 更多