下面分别给你 Debian 上 Kafka 消费者 的常见写法,覆盖 命令行 和 代码(Java / Python) 两种方式,你可以按需求选。
sudo apt update
sudo apt install -y default-jdk
java -version
wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
tar -xzf kafka_2.13-3.7.0.tgz
cd kafka_2.13-3.7.0
# 启动 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 \
--bootstrap-server localhost:9092 \
--partitions 1 \
--replication-factor 1
bin/kafka-console-consumer.sh \
--topic test \
--bootstrap-server localhost:9092 \
--from-beginning
✅ 适合:
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>3.7.0</version>
</dependency>
import org.apache.kafka.clients.consumer.*;
import org.apache.kafka.common.serialization.StringDeserializer;
import java.time.Duration;
import java.util.Collections;
import java.util.Properties;
public class KafkaConsumerDemo {
public static void main(String[] args) {
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("group.id", "test-group");
props.put("key.deserializer", StringDeserializer.class.getName());
props.put("value.deserializer", StringDeserializer.class.getName());
props.put("auto.offset.reset", "earliest");
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(Collections.singletonList("test"));
while (true) {
ConsumerRecords<String, String> records =
consumer.poll(Duration.ofMillis(100));
for (ConsumerRecord<String, String> record : records) {
System.out.printf(
"offset=%d, key=%s, value=%s%n",
record.offset(), record.key(), record.value()
);
}
}
}
}
pip install kafka-python
from kafka import KafkaConsumer
consumer = KafkaConsumer(
"test",
bootstrap_servers="localhost:9092",
group_id="test-group",
auto_offset_reset="earliest"
)
for msg in consumer:
print(f"offset={msg.offset}, value={msg.value.decode()}")
✅ group.id
✅ auto.offset.reset
earliest:从最早消息开始latest:只消费新消息✅ Debian 防火墙
sudo ufw allow 9092
如果你告诉我:
我可以直接给你 可直接跑的完整示例。