在 Linux 上连接 Kafka 客户端,通常分几种情况:命令行客户端(自带工具)、Java 客户端、其他语言客户端(Python/Go 等)。下面按常见用法说明。
/opt/kafka)192.168.1.100:9092
cd /opt/kafka/bin
./kafka-topics.sh \
--create \
--topic test-topic \
--bootstrap-server 192.168.1.100:9092 \
--partitions 1 \
--replication-factor 1
./kafka-console-producer.sh \
--topic test-topic \
--bootstrap-server 192.168.1.100:9092
输入消息后回车即可发送。
./kafka-console-consumer.sh \
--topic test-topic \
--bootstrap-server 192.168.1.100:9092 \
--from-beginning
<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.100: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);
producer.send(new ProducerRecord<>("test-topic", "hello kafka"));
producer.close();
Properties props = new Properties();
props.put("bootstrap.servers", "192.168.1.100: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"));
while (true) {
ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
records.forEach(r -> System.out.println(r.value()));
}
pip install kafka-python
from kafka import KafkaProducer
producer = KafkaProducer(bootstrap_servers='192.168.1.100:9092')
producer.send('test-topic', b'hello kafka')
producer.close()
from kafka import KafkaConsumer
consumer = KafkaConsumer(
'test-topic',
bootstrap_servers='192.168.1.100:9092',
auto_offset_reset='earliest'
)
for msg in consumer:
print(msg.value)
netstat -an | grep 9092
iptables -L
# 或
firewall-cmd --list-all
Kafka 默认 listeners 配置可能导致远程连不上:
server.properties
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://你的IP:9092
修改后重启 Kafka。
| 场景 | 方式 |
|---|---|
| 测试 | console-producer / consumer |
| Java 应用 | kafka-clients |
| Python 应用 | kafka-python |
| Go 应用 | sarama / kafka-go |
如果你能告诉我:
我可以给你更精确的配置示例。