kafka之c接口常用API------librdkafka


1 安裝方法以及相關庫文件

  https://github.com/edenhill/librdkafka

  • High-level producer
  • High-level consumer
  • Simple (Low-level) consumer
  • 壓縮:snappy, gzip, lz4
  • SSL
  • SASL

  consumer有兩套API,高級(high-level)和底層(simple)的,應該叫底層API或者低級API,它跟高級API的區別是沒有自動負載均衡,而高級API會自動進行負載均衡。

3 kafka主要的用途

  發數據---->producer

    //發一條

    rd_kafka_produce()

    //發多條

    rd_kafka_produce_batch()

  收數據---->consumer

 

 

 

 

 

  在收發數據之前至少需要一個統一的句柄,方便kafka內部准備好鏈接brokers集群,初始化kafka內部結構等

  

  建立這個kafka句柄需要知道連接到哪個broker

  

  發布消息使用rd_kafka_top_t, 

 1 // 對rd_kafka_topic_partition_list_t結構的操作
 2 // 創建
 3 rd_kafka_topic_partition_list_new();
 4 // 增加元素
 5 rd_kafka_topic_partition_list_add();
 6 // 刪除元素
 7 rd_kafka_topic_partition_list_del();
 8 // 查找元素
 9 rd_kafka_topic_partition_list_find();
10 
11 // 對rd_kafka_topic_t的操作
12 // 創建
13 rd_kafka_topic_new();
14 // 刪除
15 rd_kafka_topic_destroy();
16 // 獲取該topic的名字
17 rd_kafka_topic_name();
18 // 獲取該topic傳入的應用參數
19 rd_kafka_topic_opaque();
20 
21 // 使用rd_kafka_topic_partition_list_t的時候,topic+partition是連在一起的,
22 // 所以給kafka句柄的時候只用一個參數就夠了
23 // 訂閱消息
24 rd_kafka_subscribe (rd_kafka_t *rk,
25                             const rd_kafka_topic_partition_list_t *topics);
26 // 指定消費的partition,可以在運行時更換
27 rd_kafka_assign (rd_kafka_t *rk,
28                             const rd_kafka_topic_partition_list_t *partitions);
29 
30 // 用rd_kafka_topic_t比較麻煩,需要配合一個partition才行
31 // 直接啟動consumer了
32 rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition,
33                             int64_t offset);
34 // 每次接收也要帶上partition
35 rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition,
36                             int timeout_ms);
37 
38 
39 // 發送的時候使用 rd_kafka_topic_t
40 int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition,
41                             int msgflags,
42                             void *payload, size_t len,
43                             const void *key, size_t keylen,
44                             void *msg_opaque);
View Code

后續用了繼續做筆記,關於錯誤處理,topic_partition_list操作等

https://blog.csdn.net/lijinqi1987/article/details/76582067

http://suntus.github.io/2016/07/07/librdkafka--kafka%20C%20api%E4%BB%8B%E7%BB%8D/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM