1、启动生产者
kafka 自带了 kafka-console-producer.sh 脚本,通过该脚本可以在终端调用 kafka 生产者向 kafka 发送消息;
该脚本运行时需要指定 broker-list(kafka代理地址列表) 和 topic(消息被发送的目标主题) 两个比传参数;
可选参数:
1):通过参数 sync 指定以同步模式发送消息;
2):property 参数后跟配置项键值对;
3):producer.config 参数加载一个生产者级别的配置文件;
执行以下命令,启动一个生产者向名为kafka-action的主题发送消息,每条消息包含一个key:
kafka-console-producer.sh --broker-list localhost:9092 --topic kafka-action --property parse.key=true
由于该指令没有指定消息key与消息净荷payload之间的分隔符,默认是以制表符分割,可以通过配置项 key.separator 指定:如
kafka-console-producer.sh --broker-list localhost:9092 --topic kafka-action --property parse.key=true --property key.separator=' ' 消息key与消息实际数据之间的分隔符是空格;
查看某个主题各分区对应消息偏移量:
kafka-run-class.bat kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic kafka-action --time -1 time参数表示查看在指定时间之前的数据,支持-1(latest)、-2(earliest)两个时间选项,默认值为-1;
命令结果共三列:主题名、分区编号、消息偏移量
kafka-action:2:1
kafka-action:1:2
kafka-action:0:1
2、创建主题
若kafka服务器启动的时候开启了server.properties 文件中的创建主题的配置项 auto.create.topics.enable=true,默认是false,当生产者向一个不存在的主题发送消息的时候,kafka会自动创建主题,创建的主题配置参数使用默认的;
3、查看主题
kafka 生产的消息以二进制的形式存在文件中,kafka提供了一个查看日志文件的工具类 kafka.tools.DumpLogSegments。
产看某个日志文件,files是必参数,多个文件之间用 逗号 隔开:
kafka-run-class.sh kafka.tools.DumpLogSegments --files dir
4、生产者性能测试工具
kafka 提供了生产者性能测试脚本 kafka-producer-perf-test.sh,通过该脚本,可能对生产者性能进行调优。
脚本参数说明:
topic 指定生产者发送消息的目标主题
num-records 测试时发送消息的总条数
records-size 每条消息的字节数
throughput 限流控制,当throughput值小于0时,不进行限流;当throughput值大于0时,当已发送的消息总字节数与当前已执行的时间取整大于该throughput值时,生产者线程被阻塞一段时间(生产者线程被阻塞的时,控制台可以看到输出一行吞吐量统计信息);当throughput的值等于0时,生产者发送一次消息之后检测满足阻塞条件时将一直被阻塞。
producer-props 以键值对的形式指定配置,可以同时指定多组配置,多组配置之间以空格隔开
producer.config 加载生产者级别的配置文件
性能测试脚本使用,向一个名为“cest-throughput”的主题发送100万条消息,每条消息大小为1000字节,同时acks设置为all(对应的值为-1),命令如下:
kafka-producer-perf-test.bat --topic cest-throughput --num-records 1000000 --record-size 1000 --throughput 1000000 --producer-props bootstrap.servers=localhost:9092 acks=all
测试结果:
1000000 records sent, 21524.818115 records/sec (20.53 MB/sec), 1464.26 ms avg latency, 4896.00 ms max latency, 1121 ms 50th, 3725 ms 95th, 4727 ms 99th, 4881 ms 99.9th.
records sent 测试发送的消息总条数
records/sec 每秒发送的消息数
MB/sec 每秒发送消息的大小(单位MB)
avg latency 消息处理的平均耗时,单位ms
max latency 消息处理的最大耗时,单位ms
50th /95th /99.9th 表示50%,95th,99.9th的消息处理耗时