如何在Linux上安装librdkafka (linux 安装librdkafka)
Apache Kafka已经成为现代分布式系统中广泛使用的消息传递平台。然而,Kafka在某些方面缺乏特定功能,如事务支持和流处理。为了弥补这些功能,Confluent公司开发了一个名为librdkafka的C语言库。本文将介绍如何在Linux上安装和配置librdkafka。
之一步:安装依赖项
在安装前,我们需要确保安装了以下依赖项:
– gcc编译器
– openssl
– zlib
– libssl-dev
– libz-dev
在Ubuntu上,可以使用以下命令安装这些依赖项:
sudo apt update
sudo apt install gcc openssl zlib1g-dev libssl-dev libz-dev
在其他Linux操作系统上,可以使用相应的软件包管理器安装这些依赖项。
第二步:下载和安装librdkafka
可以从GitHub librdkafka存储库中下载最新版本的librdkafka。可以使用以下命令从GitHub上下载:
git clone https://github.com/edenhill/librdkafka.git
如果您没有安装Git,请使用以下命令:
sudo apt-get install git
然后切换到下载的目录,并进行编译和安装。可以使用以下命令完成:
cd librdkafka
./configure
make
sudo make install
此将在您系统中安装librdkafka。
第三步:编写和测试程序
现在安装已完成,可以编写并测试您的程序。以下示例程序使用生产者API将消息发送到Kafka主题:
#include
int mn(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 */
/* Set up a temporary configuration object */
conf = rd_kafka_conf_new();
/* Create a new Kafka producer – use rd_kafka_conf_dup(conf) to *
* copy the configuration, for multiple producers or consumers */
if (!(rk = rd_kafka_new(RD_KAFKA_PRODUCER, conf, errstr, sizeof(errstr)))) {
fprintf(stderr, “%% Fled to create new producer: %s\n”, errstr);
return 1;
}
/* Add brokers */
if (rd_kafka_brokers_add(rk, “localhost:9092”) == 0) {
fprintf(stderr, “%% No valid brokers specified\n”);
return 1;
}
/* Create a new topic – this topic object is *temporary* and *
* lets us specify topic-specific configuration */
rd_kafka_topic_t *rkt;
if (!(rkt = rd_kafka_topic_new(rk, “test”, NULL))) {
fprintf(stderr, “%% Fled to create topic object: %s\n”, rd_kafka_err2str(rd_kafka_last_error()));
rd_kafka_destroy(rk);
return 1;
}
/* Produce a message */
if (rd_kafka_produce(rkt, RD_KAFKA_PARTITION_UA, RD_KAFKA_MSG_F_COPY /* Copy payload */ ,
“Message payload”, 15 /* Message length */ , NULL, 0, NULL) == -1) {
fprintf(stderr, “%% Fled to produce to topic %s partition %i: %s\n”, rd_kafka_topic_name(rkt), RD_KAFKA_PARTITION_UA, rd_kafka_err2str(rd_kafka_last_error()));
rd_kafka_topic_destroy(rkt);
rd_kafka_destroy(rk);
return 1;
}
fprintf(stderr, “%% Enqueued message (%6d bytes) for topic %s\n”, 15, rd_kafka_topic_name(rkt));
rd_kafka_topic_destroy(rkt);
rd_kafka_destroy(rk);
return 0;
}
可以使用以下命令从命令行编译和运行程序:
gcc -o test_producer test_producer.c -lrdkafka
./test_producer
这将使用生产者API发送消息并输出确认消息是否已成功发送。
结论