【发布时间】: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 有关?
【问题讨论】:
-
localhost与127.0.0.1不完全相同。您是否尝试过实际使用localhost? -
是的,127.0.0.1:9092、localhost:9092 都试过了。当这些不起作用时,甚至尝试了 0.0.0.0:9092,但结果相同。
标签: java apache-kafka