下面给你一份**在 Debian 上配置 Kafka 消费者(命令行 + Java 示例)**的实用说明,从环境到跑通一条消息。
Kafka 需要 JDK 8 或以上:
sudo apt update
sudo apt install -y openjdk-17-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 ln -s /opt/kafka_2.13-3.7.0 /opt/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
/opt/kafka/bin/kafka-topics.sh \
--create \
--topic test-topic \
--bootstrap-server localhost:9092 \
--partitions 1 \
--replication-factor 1
/opt/kafka/bin/kafka-console-consumer.sh \
--topic test-topic \
--bootstrap-server localhost:9092 \
--from-beginning
参数说明:
--from-beginning:从最早消息开始消费另开一个终端:
/opt/kafka/bin/kafka-console-producer.sh \
--topic test-topic \
--bootstrap-server localhost:9092
输入:
hello kafka
消费者终端会显示:
hello kafka
常见消费者配置(consumer.properties):
bootstrap.servers=localhost:9092
group.id=test-group
auto.offset.reset=earliest
enable.auto.commit=true
使用方式:
/opt/kafka/bin/kafka-console-consumer.sh \
--topic test-topic \
--bootstrap-server localhost:9092 \
--consumer.config /path/consumer.properties
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>3.7.0</version>
</dependency>
Properties props = new Properties();
props.put("bootstrap.servers", "localhost: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");
props.put("auto.offset.reset", "earliest");
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(List.of("test-topic"));
while (true) {
ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
for (ConsumerRecord<String, String> r : records) {
System.out.println(r.value());
}
}
server.properties 中:listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://<服务器IP>:9092
group.id 是否重复auto.offset.reset 是否设置如果你是要:
告诉我,我可以直接给你对应配置。