c lib rdkafka接口说明

一、主要数据结构

1、typedef struct rd_kafka_conf_s rd_kafka_conf_t;

rd_kafka_conf_t是kafka的全局配置结构,通过rd_kafka_conf_new()创建,创建时即进行了默认配置,通过rd_kafka_conf_set()设置参数值,是rd_kafka_new()创建kafka处理句柄的第二个参数,是必须创建的结构。

2、typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;

rd_kafka_topic_conf_t主题配置结构,通过rd_kafka_topic_conf_new()创建,创建时即进行了默认配置,通过rd_kafka_topic_conf_set()设置参数值,是必须创建的结构。

3、typedef struct rd_kafka_s rd_kafka_t;

rd_kafka_t 是kafka 处理句柄结构,分为producer类型和consumer类型,由rd_kafka_new()第一个参数类型决定。rd_kafka_t是一个总体结构,conf和topic_conf都是为此结构服务,其中包含rk_brokers链表,rk_topics链表,是必须创建的结构。

4、typedef struct rd_kafka_topic_partition_list_s rd_kafka_topic_partition_list_t;

rd_kafka_topic_partition_list_t 可扩展长度的 主题-分区 链表,通过rd_kafka_topic_partition_list_new()创建,创建时指定长度,通过rd_kafka_topic_partition_list_add()添加 主题-分区对,用于订阅消息。

 

二、主要接口

1、rd_kafka_conf_t *rd_kafka_conf_new (void)

参数:无

返回值:rd_kafka_conf_t *

创建一个kafka全局配置结构,并进行默认初始化设置,返回其引用指针。

2、rd_kafka_conf_res_t rd_kafka_conf_set (rd_kafka_conf_t *conf,

                                       const char *name,

                                       const char *value,

                                       char *errstr, size_t errstr_size)

参数:

conf:配置结构

vame:配置项名称

value:配置项值

errstr:错误提示

errstr_size:错误提示长度

返回值:rd_kafka_conf_res_t 枚举,错误写入errstr中

name具体的名称及作用见rd_kafka_properties 中_RK_GLOBAL类型的数据定义。调用这个函数后再调用rd_kafka_conf_set_default_topic_conf()会将之前设置的值全部用默认值覆盖掉。因为错误提示会写入errstr中,所以提前给errstr分配512字节空间。

bootstrap.servers

 

3、rd_kafka_topic_conf_t *rd_kafka_topic_conf_new (void)

参数:无

返回值:rd_kafka_topic_conf_t *

创建一个主题配置结构,并进行默认初始化设置,返回其引用指针。

4、rd_kafka_conf_res_t rd_kafka_topic_conf_set (rd_kafka_topic_conf_t *conf,

     const char *name,

     const char *value,

     char *errstr, size_t errstr_size)

参数:

Conf:主题配置结构

Name:主题配置项名称

Value:主题配置项值

Errstr:错误提示

errstr_size:错误提示长度

返回值:rd_kafka_conf_res_t 枚举,错误写入errstr中

name具体的名称及作用见rd_kafka_properties 中_RK_TOPIC类型的数据定义。因为错误提示会写入errstr中,所以提前给errstr分配512字节空间。

5、rd_kafka_t *rd_kafka_new (rd_kafka_type_t type, rd_kafka_conf_t *app_conf,

  char *errstr, size_t errstr_size)

参数:

Type:RD_KAFKA_PRODUCER是创建生产者类型,RD_KAFKA_CONSUMER是创建消费者类型

Conf:配置结构

Errstr:错误提示

errstr_size:错误提示长度

返回值:

成功:返回rd_kafka_t *kafka操作句柄

失败:返回NULL,并记录错误信息到errstr

程序中先配置conf和topic_conf,然后调用此接口生成操作句柄。对消费者来讲,订阅主题,轮询接收消息。对生产者来讲,根据主题生成主题操作句柄,并通过主题操作句柄发送消息。

6、void rd_kafka_destroy (rd_kafka_t *rk)

参数:

Rk:kafka操作句柄

返回值:无

释放创建的kafka操作句柄。

6、rd_kafka_topic_t *rd_kafka_topic_new (rd_kafka_t *rk, const char *topic,

                                      rd_kafka_topic_conf_t *conf)

参数:

Rk:kafka操作句柄

Topic:主题内容

Conf:主题配置

返回值:

成功:返回rd_kafka_topic_t * 主题操作句柄

失败:返回NULL,记录错误信息到errstr

此接口一般是生产者使用,使用此接口生成的主题操作句柄进行发送消息。

7、void rd_kafka_topic_destroy (rd_kafka_topic_t *app_rkt)

参数:

app_rkt:主题操作句柄

返回值:无

释放创建的主题操作句柄

8、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)

参数:

Rkt:主题操作句柄

Partition:分区号

Msgflags:消息标志,使用RD_KAFKA_MSG_F_COPY标志

Payload:消息体指针

Len:消息体长度

Key:消息选项key值,用作平衡分区,计算分区号的,填NULL

Keylen:key长度,填0

msg_opaque:是作为回调函数的参数,填NULL

10、int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms)

参数:

Rk:kafka操作句柄

timeout_ms:毫秒级时间

返回值:处理的事件数

发送完消息后调用此接口,timeout_ms是毫秒级的时间,函数会阻塞timeout_ms 毫秒等待事件处理,调用设置的回调函数。timeout_ms为0是非阻塞状态。

11、rd_kafka_resp_err_t rd_kafka_flush (rd_kafka_t *rk, int timeout_ms)

参数:

Rk:kafka操作句柄

timeout_ms:毫秒级时间

返回值:

成功:RD_KAFKA_RESP_ERR_NO_ERROR

失败:RD_KAFKA_RESP_ERR__TIMED_OUT

在摧毁生产者之前调用此接口,确保正在排队和正在进行的消息被处理完成。此函数会调用rd_kafka_poll()并触发回调。

12、int rd_kafka_brokers_add (rd_kafka_t *rk, const char *brokerlist)

参数:

Rk:kafka操作句柄

Brokerlist:broker字符串 如:”172.20.51.38:9092” 不写端口,则采用默认端口9092

   多个broker  brokerlist = "broker1:10000,broker2"

返回值:成功添加的broker个数

添加一个broker也可以通过 设置rd_kafka_conf_t结构中的 "bootstrap.servers" 配置项

rd_kafka_conf_set(conf, "bootstrap.servers", brokers, errstr, sizeof(errstr))

13、rd_kafka_resp_err_t rd_kafka_poll_set_consumer (rd_kafka_t *rk)

参数:

Rk:kafka操作句柄

返回值:rd_kafka_resp_err_t 枚举

将消息重定向到了消费者队列,可以使用rd_kafka_consumer_poll()进行取消息。

14、rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new (int size)

参数:size是topic结构的个数

返回值:无

你可能感兴趣的:(C++实战)