kafka生产者
Kafka 生产者深度解析:从命令行到源码实现
Kafka 生产者是消息流入 Kafka 集群的入口,负责将业务数据可靠、高效地发送到指定主题。无论是通过命令行工具快速发送消息,还是通过 KafkaProducer 客户端进行编程式集成,理解其工作机制、配置参数及底层流程都是优化性能和确保可靠性的关键。本文将从命令行工具、核心配置、性能测试到源码实现,全面解析 Kafka 生产者。
命令行生产者工具:kafka-console-producer
Kafka 提供 kafka-console-producer.sh(Linux/Mac)或 kafka-console-producer.bat(Windows)工具,用于快速通过命令行发送消息,适合测试和调试场景。
基本使用
(1)发送无 Key 消息
# Linux/Mac
./kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test-topic
# Windows
kafka-console-producer.bat --bootstrap-server localhost:9092 --topic test-topic
输入消息并回车即可发送,每条输入会作为一条消息发送到 test-topic。
(2)发送带 Key 消息
通过 --property parse.key=true 启用 Key 解析,Key 与 Value 用Tab 键分隔:
# 发送带 Key 的消息(Key 为 "user1",Value 为 "hello")
./kafka-console-producer.sh --bootstrap-server localhost:9092 \
--topic test-topic \
--property parse.key=true \
--property key.separator=$'\t' # 指定分隔符为 Tab(默认)
输入 user1<Tab>hello 并回车,消息 Key 为 user1,Value 为 hello。
核心参数说明
| 参数 | 作用 | 默认值 |
|---|---|---|
--bootstrap-server |
Kafka 集群地址(替代旧版 --broker-list) |
无(必传) |
--topic |
目标主题名称 | 无(必传) |
--property |
自定义属性(如 parse.key=true 启用 Key 解析) |
无 |
--producer-property |
生产者配置(如 acks=all) |
无 |
--sync |
同步发送消息(默认异步) | false |
--compression-codec |
消息压缩算法(none/gzip/snappy 等) |
none |
生产者核心配置参数
Kafka 生产者的行为由一系列配置参数控制,可通过配置文件或代码指定。核心参数如下: