我正在玩 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 有关?
答案 0 :(得分:0)
您需要在 WSL2 中运行您的代码,或者您需要设置一个从管理程序到 Windows 本地网络适配器的端口转发,以便 127.0.0.1
或 localhost
工作(假设您没有t 修改任何主机文件)