下面给你一份在 Debian 上配置 Kafka 生产者的实用指南,覆盖系统环境、Kafka 安装、生产者配置、命令行测试和 Java 示例。
Kafka 需要 JVM(推荐 JDK 8 / 11 / 17)
sudo apt update
sudo apt install -y openjdk-17-jdk
验证:
java -version
cd /opt
sudo wget https://downloads.apache.org/kafka/3.7.1/kafka_2.13-3.7.1.tgz
sudo tar -xzf kafka_2.13-3.7.1.tgz
sudo mv kafka_2.13-3.7.1 kafka
cd /opt/kafka
# 启动 Zookeeper
bin/zookeeper-server-start.sh config/zookeeper.properties &
# 启动 Kafka
bin/kafka-server-start.sh config/server.properties &
bin/kafka-topics.sh \
--create \
--topic test-topic \
--bootstrap-server localhost:9092 \
--partitions 3 \
--replication-factor 1
查看 Topic:
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
bin/kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--topic test-topic
输入消息即可:
hello kafka
debian producer test
创建 producer.properties:
bootstrap.servers=localhost:9092
key.serializer=org.apache.kafka.common.serialization.StringSerializer
value.serializer=org.apache.kafka.common.serialization.StringSerializer
acks=all
retries=3
linger.ms=10
batch.size=16384
使用配置文件:
bin/kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--topic test-topic \
--producer.config producer.properties
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>3.7.1</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");
KafkaProducer<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("Sent to partition " + metadata.partition());
} else {
exception.printStackTrace();
}
});
producer.close();
}
}
检查:
netstat -tunlp | grep 9092
server.properties 中修改:
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://<公网IP>:9092
acks=allretries如果你需要:
可以直接告诉我你的使用场景。