使用librdkafka作为producer (一)

github地址: https://github.com/edenhill/librdkafka


使用librdkafka开发一个producer的步骤:

librdkafka:
1. conf 设置
kafka conf:
    rd_kafka_conf_new(): rd_kafka_conf_set()
topic conf:
    rd_kafka_topic_conf_new(): rd_kafka_topic_conf_set()
    
2. 设置conf回调,消息发送成功或者失败都会调用
    rd_kafka_conf_set_dr_cb()
    rd_kafka_conf_set_dr_msg_cb()

3. 创建kafka
    rd_kafka_new()
设置系统日志
    rd_kafka_set_logger()
    rd_kafka_set_log_level()
添加下游brokers:
    rd_kafka_brokers_add()
    
4. 创建新的topic
    rd_kafka_topic_new()
    
5. producer:
    rd_kafka_produce()
    发送后,设置时间观察,第二个参数是阻塞等待时间,一般设置为0,rd_kafka_poll()
    
6. 销毁操作
    rd_kafka_topic_destroy()
    rd_kafka_destroy()
    rd_kafka_wait_destroyed(2000)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用librdkafka库可以轻松地开发Kafka客户端应用程序。以下是使用librdkafka库的一些基本步骤: 1. 安装librdkafka库:您可以通过下载和编译源代码或使用操作系统的软件包管理器来安装librdkafka库。 2. 创建Kafka生产者/消费者配置:您需要设置Kafka集群的连接配置和其他参数,例如主题名称、分区、消息序列化器等。 3. 创建Kafka生产者/消费者:使用librdkafka库提供的API创建Kafka生产者/消费者对象。 4. 发送/接收消息:使用Kafka生产者/消费者对象发送/接收消息。您可以使用同步或异步API发送/接收消息。 5. 处理错误:处理可能发生的错误,例如连接错误、发送错误、接收错误等。 以下是使用librdkafka库创建Kafka生产者/消费者的示例代码: ```c #include <stdio.h> #include <string.h> #include <librdkafka/rdkafka.h> int main(int argc, char **argv) { rd_kafka_t *rk; /* Producer instance handle */ rd_kafka_conf_t *conf; /* Temporary configuration object */ char errstr[512]; /* librdkafka API error reporting buffer */ /* Kafka broker configuration */ char *brokers = "localhost:9092"; char *topic = "test_topic"; /* Create Kafka configuration object */ conf = rd_kafka_conf_new(); /* Set bootstrap broker(s) */ if (rd_kafka_conf_set(conf, "bootstrap.servers", brokers, errstr, sizeof(errstr)) != RD_KAFKA_CONF_OK) { fprintf(stderr, "Failed to set broker: %s\n", errstr); rd_kafka_conf_destroy(conf); return 1; } /* Create producer instance */ rk = rd_kafka_new(RD_KAFKA_PRODUCER, conf, errstr, sizeof(errstr)); if (!rk) { fprintf(stderr, "Failed to create producer: %s\n", errstr); rd_kafka_conf_destroy(conf); return 1; } /* Create message object */ rd_kafka_topic_t *rkt; rkt = rd_kafka_topic_new(rk, topic, NULL); /* Produce message */ const char *message = "Hello, Kafka!"; size_t len = strlen(message); rd_kafka_resp_err_t err; err = rd_kafka_produce(rkt, RD_PARTITION_UA, RD_MSG_F_COPY, (void *)message, len, NULL, 0, NULL); if (err != RD_KAFKA_RESP_ERR_NO_ERROR) { fprintf(stderr, "Failed to produce message: %s\n", rd_kafka_err2str(err)); } /* Wait for message delivery */ rd_kafka_poll(rk, 0); /* Destroy message object */ rd_kafka_topic_destroy(rkt); /* Destroy producer instance */ rd_kafka_destroy(rk); return 0; } ``` 这是一个简单的Kafka生产者示例代码,它将消息“Hello, Kafka!&rdquo;发送到Kafka集群。您可以使用类似的方式创建Kafka消费者。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值