下面给你一份在 Debian 上配置 Kafka 生产者 的常见做法,从环境到示例都覆盖,适合新手。
Kafka 依赖 Java(推荐 JDK 8 / 11 / 17)
sudo apt update
sudo apt install -y default-jdk
java -version
cd /opt
sudo wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
sudo tar -xzf kafka_2.13-3.7.0.tgz
sudo mv kafka_2.13-3.7.0 kafka
/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
Kafka 3.x 也可使用 KRaft(无 Zookeeper),但新手建议先用 Zookeeper 模式
/opt/kafka/bin/kafka-topics.sh \
--create \
--topic test-topic \
--bootstrap-server localhost:9092 \
--partitions 1 \
--replication-factor 1
/opt/kafka/bin/kafka-console-producer.sh \
--topic test-topic \
--bootstrap-server localhost:9092
输入消息回车即可发送。
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>3.7.0</version>
</dependency>
import org.apache.kafka.clients.producer.*;
import java.util.Properties;
public class KafkaProducerDemo {
public static void main(String[] args) {
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer",
"org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer",
"org.apache.kafka.common.serialization.StringSerializer");
Producer<String, String> producer = new KafkaProducer<>(props);
ProducerRecord<String, String> record =
new ProducerRecord<>("test-topic", "key1", "hello kafka");
producer.send(record, (metadata, exception) -> {
if (exception == null) {
System.out.println("发送成功: " + metadata);
} else {
exception.printStackTrace();
}
});
producer.close();
}
}
acks=all
retries=3
linger.ms=5
batch.size=16384
compression.type=snappy
示例:
props.put("acks", "all");
props.put("retries", 3);
props.put("linger.ms", 5);
修改:
props.put("bootstrap.servers", "192.168.1.100:9092");
并确保:
server.properties 中:listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://服务器IP:9092
如果你是想问:
告诉我你具体场景,我直接给你对应配置。