1 安装方法以及相关库文件

  https://github.com/edenhill/librdkafka

2

  • 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, 

 // 对rd_kafka_topic_partition_list_t结构的操作
// 创建
rd_kafka_topic_partition_list_new();
// 增加元素
rd_kafka_topic_partition_list_add();
// 删除元素
rd_kafka_topic_partition_list_del();
// 查找元素
rd_kafka_topic_partition_list_find(); // 对rd_kafka_topic_t的操作
// 创建
rd_kafka_topic_new();
// 删除
rd_kafka_topic_destroy();
// 获取该topic的名字
rd_kafka_topic_name();
// 获取该topic传入的应用参数
rd_kafka_topic_opaque(); // 使用rd_kafka_topic_partition_list_t的时候,topic+partition是连在一起的,
// 所以给kafka句柄的时候只用一个参数就够了
// 订阅消息
rd_kafka_subscribe (rd_kafka_t *rk,
const rd_kafka_topic_partition_list_t *topics);
// 指定消费的partition,可以在运行时更换
rd_kafka_assign (rd_kafka_t *rk,
const rd_kafka_topic_partition_list_t *partitions); // 用rd_kafka_topic_t比较麻烦,需要配合一个partition才行
// 直接启动consumer了
rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition,
int64_t offset);
// 每次接收也要带上partition
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition,
int timeout_ms); // 发送的时候使用 rd_kafka_topic_t
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition,
int msgflags,
void *payload, size_t len,
const void *key, size_t keylen,
void *msg_opaque);

后续用了继续做笔记,关于错误处理,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/

kafka之c接口常用API------librdkafka的更多相关文章

  1. Kafka命令行操作及常用API

    一.Kafka命令行操作 1.查看当前集群已存在的主题 bin/kafka-topic.sh --zookeeper hd09-01:2181 --list 2.创建主题 bin/kafka-topi ...

  2. 常用API接口汇总

    下面列举了100多个国内常用API接口,并按照 笔记.出行.词典.电商.地图.电影.即时通讯.开发者网站.快递查询.旅游.社交.视频.天气.团队协作.图片与图像处理.外卖.消息推送.音乐.云.语义识别 ...

  3. Java基础学习笔记十二 类、抽象类、接口作为方法参数和返回值以及常用API

    不同修饰符使用细节 常用来修饰类.方法.变量的修饰符 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权 ...

  4. Spring Boot入门(四):开发Web Api接口常用注解总结

    本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 在程序员的日常工作中,Web开发应该是占比很重的一部分,至少我工作以来,开发的系统基本都是Web端访问的 ...

  5. 常用API接口

    引用  常用API接口汇总

  6. Map容器——TreeMap及常用API,Comparator和Comparable接口

    TreeMap及常用API ①   TreeMap类通过使用红黑树实现Map接口; ②   TreeMap提供按排序顺序存储键/值对的有效手段,同时允许快速检索; ③   不像散列(HashMap), ...

  7. kafka系列九、kafka事务原理、事务API和使用场景

    一.事务场景 最简单的需求是producer发的多条消息组成一个事务这些消息需要对consumer同时可见或者同时不可见 . producer可能会给多个topic,多个partition发消息,这些 ...

  8. java基础3.0:Java常用API

    本篇介绍Java基础中常用API使用,当然只是简单介绍,围绕重要知识点引入,巩固开发知识,深入了解每个API的使用,查看JavaAPI文档是必不可少的. 一.java.lang包下的API Java常 ...

  9. 【OpenGL游戏开发之二】OpenGL常用API

    OpenGL常用API 开发基于OpenGL的应用程序,必须先了解OpenGL的库函数.它采用C语言风格,提供大量的函数来进行图形的处理和显示.OpenGL库函数的命名方式非常有规律.所有OpenGL ...

随机推荐

  1. hadoop 学习笔记:mapreduce框架详解(转)

    原文:http://www.cnblogs.com/sharpxiajun/p/3151395.html(有删减) Mapreduce运行机制 下面我贴出几张图,这些图都是我在百度图片里找到的比较好的 ...

  2. hihocoder 1142 三分求极值【三分算法 模板应用】

    #1142 : 三分·三分求极值 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 这一次我们就简单一点了,题目在此: 在直角坐标系中有一条抛物线y=ax^2+bx+c和一 ...

  3. php: xampp安装对应的phalcon版本(3.2.2-php5.6):比如redis-php5.6, php_igbinary-5.6

    php: xampp安装对应的phalcon版本(3.2.2-php5.6):比如redis-php5.6, php_igbinary-5.6 一.php安装redis扩展   1.使用phpinfo ...

  4. 分享知识-快乐自己:FastDFS 图片服务器的搭建

    使用一台虚拟机来模拟,只有一个Tracker.一个Storage服务,配置nginx访问图片. 1):安装依赖包 yum -y install zlib zlib-devel pcre pcre-de ...

  5. 是否可以重定向到 WEB-INFO 下的页面?

    redirect的路径一定不能在WEB-INF路径下,因为redirect是相当于用户直接访问了路径,而用户不能访问WEB-INF目录下的文件,只有程序内部转发的时候才能转发到WEB-INF下的JSP ...

  6. 什么是 Sass 其与SCSS区别是什么?

    Sass 官网上是这样描述 Sass 的: Sass 是一门高于 CSS 的元语言,它能用来清晰地.结构化地描述文件样式,有着比普通 CSS 更加强大的功能. Sass 能够提供更简洁.更优雅的语法, ...

  7. Building Performant Expand & Collapse Animations

    t's starting to be pretty common knowledge that there are only 2 things you can animate cheaply in C ...

  8. C#子线程执行完后通知主线程

    其实这个比较简单,子线程怎么通知主线程,就是让子线程做完了自己的事儿就去干主线程的转回去干主线程的事儿. 那么怎么让子线程去做主线程的事儿呢,我们只需要把主线程的方法传递给子线程就行了,那么传递方法就 ...

  9. 重拾安卓_01_安卓开发环境搭建(android studio)

    一.下载安装SDK 参考:搭建Android开发环境——Eclipse  的安装SDK部分 二.安装android studio 参考: Android Studio 入门级教程(一) 三.andro ...

  10. 使用JQuery,动态增加列

    这也是我在自己学做网站时无意搞出来的,希望可以对别人有所启发 <%@ page language="java" import="java.util.*" ...