rdkafka_simple_producer.c 使用指南

1 . 概述
rdkafka_simple_producer.c 是librdkafka源码包中附属的一个 kafka 生产者客户端文件。通过编译并执行该文件可以达到向 kafka 主题(topic) 生成数据的效果。下图是librdkafka源码包的一个目录框架拓扑结构图。
rdkafka_simple_producer.c 使用指南_第1张图片
其中 examples 目录下集成了常用的kafka 生产者、消费者(批量消费、单条消费、回调函数消费)等文件, src 目录下是 C 的API。拓扑图如下:
rdkafka_simple_producer.c 使用指南_第2张图片
本次着重讲解 dkafka_simple_producer.c 的编译方式、使用方式等。首先需要编译出librdkafka.so 动态库,操作流程如下:
(1)在 librdkafka(eg: /home/xxx/xx/librdkafka) 目录下执行 ./configure
(2)make -j
当第(2)个操作执行完后,终端会日志打印提示,所需动态库librdkafka.so已经编译成功,如图:
rdkafka_simple_producer.c 使用指南_第3张图片
此时编译生成的静态库和动态库会放在 src 目录下,如图:
rdkafka_simple_producer.c 使用指南_第4张图片
当动态库成功编译好之后,可以切换到 examples下,编译rdkafka_simple_producer.c 文件,其编译方式为:

//SimpleProducer --- 指定一个直观、便于理解的成果物名
gcc rdkafka_simple_producer.c -I ../src/ -L ../src/ -lrdkafka -o SimpleProducer

到这里,我们的生产者 SimpleProducer 已经大功告成,接下来就是将其和相应依赖动态库(librdkafka.so)放在已经开启了 kafka服务去设备上面进行消息生产验证。
2. SimpleProducer 生产消息
使用命令netstat -tunlp|egrep "(2181|9092)" 查看下当前设备,kafka和zookeeper服务是否已经开启并正常工作。
在这里插入图片描述
可以看到当前的设备上面kafka和zk是正常在线工作的,我这里采用了默认的端口(kafka:9092 zk:2181),接下来使用 SimpleProducer 向主题生产数据。[kafka 主题创建请参考:(点击链接跳转)] , 为了节省篇幅,我这里已经提前创建好了主题 lxg, 分区1个, 副本1.

 /*
  * Argument validation
  */
  if (argc != 3) {
     
        fprintf(stderr, "%% Usage: %s  \n", argv[0]);
        return 1;
    }

上面的代码截取自 rdkafka_simple_producer.c 文件中的一小部分,这个错误日志打印告知了 生产者所(SimpleProducer)需参数以及其顺序。第二个参数 kafka broker 地址(单机:ip:port 集群:ip:port, ip:port),如下图:
rdkafka_simple_producer.c 使用指南_第5张图片
其中0000xxxxx,11111xxxxx,222222xxxxx,3333333xxxxx 为向 kafka 主题(lxg)生产的数据。此刻我们打开另外一个终端,打印其 lxg主题对应的日志目录下的:

// 主要打印00000000000000000000.log 文件,该文件里存放的生产的数据

00000000000000000000.index  00000000000000000000.log

命令:sh kafka-run-class.sh kafka.tools.DumpLogSegments --print-data-log --files /home/SATA1/test/kakfa_data/lxg-0/00000000000000000000.log ,其打印结果如下:
rdkafka_simple_producer.c 使用指南_第6张图片
可以看到,生产者成功地向主题(lxg)中生产了数据。




























你可能感兴趣的:(kafka)