当前位置: 首页 > 工具软件 > clib > 使用案例 >

rdkafka(kafka C lib) 数据写入流程

杨彦君
2023-12-01

将rdkafka数据写入过程分为两部分:
1. 用户程序调用相关接口(rd_kafka_produce)produce数据;
2. rdkafka内部线程异步向kafka服务端发送数据;

1. producer发送流程

1.1 流程图

Created with Raphaël 2.1.0 rd_kafka_produce 缓冲未达上限 入缓冲队列 处理结束 异常退出 yes no

1.2 流程说明

配置项“queue.buffering.max.messages”决定缓冲上限,默认100000(10W)条数据,每topic一个;

2. rdkafka主流程

2.1 流程图

Created with Raphaël 2.1.0 main 遍历分区 达到批量数量/超时 发送数据 处理结束 yes no

2.2 说明

  1. 调用rd_kafka_new时,针对每个broker创建一个子线程,启动该处理流程;
  2. 配置项“batch.num.messages”决定批量大小,默认1000条数据,每partition单独计数;
  3. 配置项“queue.buffering.max.ms”决定消息缓存时间,默认1000ms,每partition单独计量;

问题

  1. 发送数据不能太快,如果写入速度远超过网络发送速度,会导致produce失败,错误信息形如:
[2016-07-26 12:24:30] Failed to produce message: Local: Queue full
 类似资料: