下面分几种常见场景,给你讲一下 Debian 上 Kafka 的连接配置方式(以 Kafka 2.x/3.x 为例,Java 客户端为主)。
Kafka broker 启动前,最重要的是 listeners 和 advertised.listeners。
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://localhost:9092
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://<服务器IP>:9092
⚠️
advertised.listeners是客户端真正连接的地址
sudo ufw allow 9092/tcp
或(iptables):
sudo iptables -A INPUT -p tcp --dport 9092 -j ACCEPT
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>3.6.0</version>
</dependency>
Properties props = new Properties();
props.put("bootstrap.servers", "192.168.1.10:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
KafkaProducer<String, String> producer = new KafkaProducer<>(props);
Properties props = new Properties();
props.put("bootstrap.servers", "192.168.1.10:9092");
props.put("group.id", "test-group");
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(List.of("test-topic"));
kafka-console-producer.sh \
--broker-list localhost:9092 \
--topic test
kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic test \
--from-beginning
| 问题 | 原因 |
|---|---|
| Connection refused | Kafka 没起 / 端口不对 |
| 能连但马上断 | advertised.listeners 配错 |
| 远程连不上 | 防火墙 / 云安全组 |
| 域名解析失败 | hosts 或 DNS 问题 |
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://宿主机IP:9092
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
如果你能告诉我:
我可以直接给你一份可复制的配置。