Kafka C++客户端库librdkafka笔记

目录

目录 1

1. 前言 2

2. 缩略语 2

3. 配置和主题 3

3.1. 配置和主题结构 3

3.1.1. Conf 3

3.1.2. ConfImpl 3

3.1.3. Topic 3

3.1.4. TopicImpl 3

4. 线程 4

5. 消费者 5

5.1. 消费者结构 5

5.1.1. Handle 5

5.1.2. HandleImpl 5

5.1.3. ConsumeCb 6

5.1.4. EventCb 6

5.1.5. Consumer 7

5.1.6. KafkaConsumer 7

5.1.7. KafkaConsumerImpl 7

5.1.8. rd_kafka_message_t 7

5.1.9. rd_kafka_msg_s 7

5.1.10. rd_kafka_msgq_t 8

5.1.11. rd_kafka_toppar_t 8

6. 生产者 10

6.1. 生产者结构 10

6.1.1. DeliveryReportCb 11

6.1.2. PartitionerCb 11

6.1.3. Producer 11

6.1.4. ProduceImpl 11

6.2. 生产者启动过程1 11

6.3. 生产者启动过程2 12

6.4. 生产者生产过程 14

7. poll过程 15

1. 前言

librdkafka提供的异步的生产接口,异步的消费接口和同步的消息接口,没有同步的生产接口。

2. 缩略语

缩略语

缩略语全称

示例或说明

rd

Rapid Development

rd.h

rk

RdKafka

 

toppar

Topic Partition

struct rd_kafka_toppar_t

{

};

rep

Reply,

struct rd_kafka_t {

  rd_kafka_q_t *rk_rep

};

msgq

Message Queue

struct rd_kafka_msgq_t {

};

rkb

RdKafka Broker

Kafka代理

rko

RdKafka Operation

Kafka操作

rkm

RdKafka Message

Kafka消息

payload

 

存在Kafka上的消息(或叫Log)

3. 配置和主题

3.1. 配置和主题结构

Kafka C++客户端库librdkafka笔记 

3.1.1. Conf

配置接口,配置分两种:全局的和主题的。

3.1.2. ConfImpl

配置的实现。

3.1.3. Topic

主题接口。

3.1.4. TopicImpl

主题的实现。

我有几张阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,马上就要抢光了。

4. 线程

RdKafka编程涉及到三类线程:

1) 应用线程,业务代码的实现

2) Kafka Broker线程rd_kafka_broker_thread_main,负责与Broker通讯,多个

3) Kafka Handler线程rd_kafka_thread_main,每创建一个consumerproducer即会创建一个Handler线程。

Kafka C++客户端库librdkafka笔记 

5. 消费者

5.1. 消费者结构

Kafka C++客户端库librdkafka笔记 

5.1.1. Handle

定义了poll等接口,它的实现者为HandleImpl

5.1.2. HandleImpl

实现了消费者和生产者均使用的poll等,其中poll的作用为:

1) 为生产者回调消息发送结果;

2) 为生产者和消费者回调事件。

class Handle {

  /**

   * @brief Polls the provided kafka handle for events.

   *

   * Events will trigger application provided callbacks to be called.

   *

   * The \p timeout_ms argument specifies the maximum amount of time

   * (in milliseconds) that the call will block waiting for events.

   * For non-blocking calls, provide 0 as \p timeout_ms.

   * To wait indefinately for events, provide -1.

   *

   * Events:

   *   - delivery report callbacks (if an RdKafka::DeliveryCb is configured) [producer]

   *   - event callbacks (if an RdKafka::EventCb is configured) [producer consumer]

   *

   * @remark  An application should make sure to call poll() at regular

   *          intervals to serve any queued callbacks waiting to be called.

   *

   * @warning This method MUST NOT be used with the RdKafka::KafkaConsumer,

   *          use its RdKafka::KafkaConsumer::consume() instead.

   *

   * @returns the number of events served.

   */

  virtual int poll(int timeout_ms) = 0;

};

5.1.3. ConsumeCb

只针对消费者的Callback

5.1.4. RebalanceCb

只针对消费者的Callback


原文链接