【原创】利用librdkafka实现的可延迟回写offset的消费者实例

在Kafka 0.8.2 或以后版本中,支持将offset提交给broker,由broker管理偏移量。在librdkafka中也支持配置偏移量存储方式:’file’ - 本地文件存储 (offset.store.path, et.al), ‘broker’ - 在 broker 上提交存储。

但是在实际应用场景中,往往会遇到这样一种情景:消费者消费了消息,然后进行处理,当处理失败或者消费者异常退出时,希望还能够重试失败的消息。因此需要先消费-处理,成功后再进行偏移量的提交。尤其是在批量抓取这种场景下,如果一批数据的偏移量已经提交了,之后才发现处理失败,就会导致丢失大部分数据。

于是在研究了很久librdkafka后,写出的可延迟回写offset的消费者实例:

hpp文件kafkaConsumer.hpp:

#ifndef KAFKA_CONSUMER_HPP
#define KAFKA_CONSUMER_HPP

#include <string>
#include "rdkafka/src-cpp/rdkafkacpp.h"

class Kafka_Consumer
{
	public:
		Kafka_Consumer(std::string groupid, std::string broker_list, std::vector<std::string> topics)
		{
			std::string errstr;
			kafka_conf = RdKafka::Conf::create(RdKafka::Conf::CONF_GLOBAL);
			kafka_tconf = RdKafka::Conf::create(RdKafka::Conf::CONF_TOPIC);
			
			if (kafka_conf-&g
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值