librdkafka 封装的C++类

本文详述了在Windows上编译librdkafka库,包括下载源码、配置环境(如依赖的openssl)、解决编译问题等步骤。接着展示了如何使用librdkafka实现Kafka的C++生产者和消费者客户端,提供了初始化、发送消息、接收消息等关键代码。此外,还给出了示例代码和错误处理。最后,提供了完整的Kafka服务部署和使用的参考链接。

 kafka就不介绍了, 可以参考kafka的c/c++高性能客户端librdkafka简介,下面说下librdkafka的编译:

下载地址:https://github.com/edenhill/librdkafka,下载zip包解压。

解压后找到目录下的win32目录, 里面是vs工程。

这里还不能编译,因为缺少openssl,需要编译openssl。

下载ActivePerl:http://www.activestate.com/activeperl/注意64位和32位, 如果你要编译64位的选择64。

下载后直接安装即可,新版程序自动加上了环境变量,无需添加。

 

下载openssl

网址 http://www.openssl.org/

我用的是openssl-1.0.2l版本,解压到F盘kafka目录。

 

安装步骤:

(可以参照openssl目录下的INSTALL.W64)

1.打开命令行

进入openssl源码目录。
cd f:/kafka/openssl-1.0.2l
依次执行:

> perl Configure VC-WIN64A
 > ms\do_win64a
 > nmake -f ms\ntdll.mak
 > cd out32dll
 > ..\ms\test

在out32dll目录下:包括可执行文件、两个out32dll和两个inc32夹,里面包含: libeay32.dll, libeay32.lib, ssleay32.dll,ssleay32.lib和头文件。

将上面的文件拷贝到librdkafka的解压目录,dll放在librdkafka的输出目录,其他放在任意位置,配置工程的时候配置进去就行了。

 

回到librdkafka工程(vs2013 打开):

在additionalinclude directories加上

"F:\kafka\openssl-1.0.2l\inc32"

在additionallibrary directories加上

"F:\kafka\openssl-1.0.2l\out32dll"

开始编译:

1.这里会出现ibeay32MT.lib等找不到,这是因为我们编译的openssl并未使用这个名称,这里只需在连接器的输入里面想连接的lib后面的MT干掉即可。

2.会出现U32 size_t不识别的问题, 只需要修改为对应的类型即可,如u32 定义为typedef unsigned u32,  改为直接使用unsigned即可

3.修改C++->运行库为多线程,debug为MTD ,release为MT,

然后全部生成,会出现一个工程跳过,不用管,实际使用不需要。

 

然后就可以开始封装了:

#pragma once

#include <iostream>

#include <string>

#include <cstdlib>

#include <cstdio>

#include <csignal>

#include <cstring>

#include <list>

#include "rdkafkacpp.h"

#include <vector>

#include<fstream>

using std::string;

using std::list;

using std::cout;
using std::endl;

using std::vector;

using std::fstream;

class KafkaProducerCallBack : public RdKafka::DeliveryReportCb {

public:

	void dr_cb(RdKafka::Message &message) {

		std::cout << "Message delivery for (" << message.len() << " bytes): " <<

			message.errstr() << std::endl;

		if (message.key())

			std:
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值