cppkafka是一个现代C++的Apache Kafka客户端库,它是对librdkafka的高级封装,旨在简化使用librdkafka的过程,同时保持最小的性能开销。
# 安装librdkafka
sudo apt-get install librdkafka-dev
# 安装CMake
sudo apt-get install cmake
# 安装Boost库
sudo apt-get install libboost-all-dev
# 验证g++版本
g++ --version
git clone https://github.com/mfontanini/cppkafka.git
cd cppkafka
mkdir build
cd build
cmake -DRDKAFKA_ROOT=/path/to/librdkafka -DBOOST_ROOT=/path/to/boost ..
make
sudo make install
问题描述:librdkafka版本过低导致编译或运行时错误
解决方案:
# 检查版本
pkg-config --modversion librdkafka
# 升级librdkafka
sudo apt-get install librdkafka-dev
问题描述:CMake找不到librdkafka路径
解决方案:
# 明确指定路径
cmake -DRDKAFKA_ROOT=/usr/local/ ..
问题描述:编译器不支持C++11
解决方案:
# 安装新版g++
sudo apt-get install g++-4.8
# 指定编译器
cmake -DCMAKE_CXX_COMPILER=/usr/bin/g++-4.8 ..
#include
using namespace std;
using namespace cppkafka;
int main() {
// 创建配置
Configuration config = {
{ "metadata.broker.list", "127.0.0.1:9092" }
};
// 创建生产者
Producer producer(config);
// 生产消息
string message = "Hello Kafka!";
producer.produce(MessageBuilder("my_topic")
.partition(0)
.payload(message));
// 刷新生产者
producer.flush();
return 0;
}
#include
using namespace std;
using namespace cppkafka;
int main() {
// 创建配置
Configuration config = {
{ "metadata.broker.list", "127.0.0.1:9092" },
{ "group.id", "test_group" },
{ "auto.offset.reset", "latest" }
};
// 创建消费者
Consumer consumer(config);
consumer.subscribe({ "my_topic" });
while (true) {
// 消费消息
Message msg = consumer.poll();
if (msg) {
if (!msg.get_error()) {
cout << "Received: " << msg.get_payload() << endl;
}
}
}
return 0;
}
Configuration config = {
{ "metadata.broker.list", "127.0.0.1:9092" },
{ "message.max.bytes", "10485760" }, // 生产者配置
{ "fetch.message.max.bytes", "40971520" } // 消费者配置
};
Configuration config = {
{ "metadata.broker.list", "127.0.0.1:9092" },
{ "group.id", "unique_group_id" },
{ "enable.auto.commit", false },
{ "auto.offset.reset", "latest" }
};
通过本指南,您应该能够:
遇到问题时,建议查阅: