The Apache Kafka C/C++ library
Перейти к файлу
Magnus Edenhill 83bddc031d Distro builders: install patch for mklove 2022-06-27 20:14:46 +02:00
.github Github actions: add apt update to avoid outdated packages (404s) 2022-05-02 17:32:28 +02:00
debian Install CHANGELOG.md as part of documentation files 2020-09-22 16:17:16 +02:00
examples rdkafka_performance: cut down on the number of poll calls in full-rate mode 2022-04-07 09:59:12 +02:00
mklove Disable curl's runtime linking check 2022-06-27 20:14:46 +02:00
packaging Distro builders: install patch for mklove 2022-06-27 20:14:46 +02:00
src Bump to version v1.9.1 2022-06-27 20:14:46 +02:00
src-cpp Bump to version v1.9.1 2022-06-27 20:14:46 +02:00
tests Added asynchronous rd_kafka_consumer_close_queue() and .._consumer_closed() 2022-06-07 18:01:53 +02:00
win32 Strategy ordering bug fix (@jliunyu, #3818) 2022-04-26 09:47:23 +02:00
.appveyor.yml Bump to version v1.9.1 2022-06-27 20:14:46 +02:00
.clang-format Add clang-format style checking and fixing 2021-10-28 19:40:58 +02:00
.clang-format-cpp Add clang-format style checking and fixing 2021-10-28 19:40:58 +02:00
.dir-locals.el Added etags/ctags TAGS makefile target and emacs .dir-locals.el pick-up 2020-05-27 16:59:46 +02:00
.doozer.json Depend on Python3 instead of EOL Python2 (#2829) 2020-04-29 11:18:44 +02:00
.formatignore Add clang-format style checking and fixing 2021-10-28 19:40:58 +02:00
.gdbmacros Added gdbmacro for msg queues 2018-11-21 12:27:40 +01:00
.gitignore Add vcpkg_installed to gitignore 2021-10-28 11:47:05 +02:00
.travis.yml Make dynamic MinGW build copy DLLs instead of trying to manipulate PATH (@neptoess, #3787) 2022-03-31 14:53:51 +02:00
CHANGELOG.md Bump to version v1.9.1 2022-06-27 20:14:46 +02:00
CMakeLists.txt Enable OauthBearer support when librdkafka is built with Curl and SSL using CMake 2022-05-30 15:06:47 +02:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2017-10-18 12:13:13 +02:00
CONFIGURATION.md KIP-601: Added `socket.connection.setup.timeout.ms` 2022-04-14 14:22:40 +02:00
CONTRIBUTING.md style-check* now fails on style warnings 2022-04-07 15:41:05 +02:00
Doxyfile Doxygen formatting fixes 2020-04-16 16:33:53 +02:00
INTRODUCTION.md Default of linger.ms mentioned in intro was out of sync with latest defalut value - fixed that. 2022-05-23 10:30:15 +02:00
LICENSE Install LICENSE file (and restore LICENSE install in rpm spec) 2020-03-31 08:00:16 +02:00
LICENSE.cjson Import cJSON v1.7.14 2021-10-28 11:47:04 +02:00
LICENSE.crc32c Import of crc32c from http://stackoverflow.com/a/17646775/1821055 2017-05-31 19:47:30 +02:00
LICENSE.fnv1a partitioner: Add FNV-1a partitioner (#2724) 2020-03-11 13:15:46 +01:00
LICENSE.hdrhistogram Ported Coda Hale's Golang HdrHistogram to C 2018-05-31 10:44:09 +02:00
LICENSE.lz4 Generate static library that includes available static dependencies 2020-03-27 13:18:52 +01:00
LICENSE.murmur2 Refactor murmur2 code and add more unit tests (unaligned access) 2018-01-03 08:35:55 +01:00
LICENSE.pycrc Extracted rdkafka from librd to its own library. 2012-09-19 12:26:37 +02:00
LICENSE.queue Native Win32 (VS) support (take one) 2015-03-24 21:59:41 +01:00
LICENSE.regexp regexp import from ccxvii/minilibs sha 875c33568b5a4aa4fb3dd0c52ea98f7f0e5ca684 2016-09-28 16:28:31 +02:00
LICENSE.snappy snappy-c upstream update: Clean import of 8015f2d287 2015-11-05 16:49:24 +01:00
LICENSE.tinycthread clean tinycthread import tinycthread.c at ce82058b05180ce, tinycthread.h at c57166cd510ffb5022dd 2015-03-23 19:55:04 +01:00
LICENSE.wingetopt clean wingetopt import of wingetopt.c and wingetopt.h at version 281d7e594d26e73d59fa6b9b90a 2015-03-23 19:55:38 +01:00
LICENSES.txt Import cJSON v1.7.14 2021-10-28 11:47:04 +02:00
Makefile style-check* now fails on style warnings 2022-04-07 15:41:05 +02:00
README.md Add link to tutorial on Confluent Developer 2022-03-03 17:27:36 +01:00
README.win32 Update README.win32 2019-05-21 12:22:41 +02:00
STATISTICS.md Statistics: let broker.wakeups metric cover all broker wakeups, both IO and cnds 2022-04-07 09:59:12 +02:00
configure Added --disable-option-checking (autoconf compat no-op) 2020-07-02 07:08:37 +02:00
configure.self Improved #if guards for OIDC 2022-05-04 08:07:39 +02:00
dev-conf.sh dev-conf.sh: add gprof mode 2020-09-09 08:01:00 +02:00
lds-gen.py Automatic style fixes using 'make style-fix' 2021-10-28 23:06:38 +02:00
mainpage.doxy Fix doxygen documentation 2019-03-14 17:35:07 +01:00
vcpkg.json Bump to version v1.9.1 2022-06-27 20:14:46 +02:00

README.md

librdkafka - the Apache Kafka C/C++ client library

Copyright (c) 2012-2020, Magnus Edenhill.

https://github.com/edenhill/librdkafka

librdkafka is a C library implementation of the Apache Kafka protocol, providing Producer, Consumer and Admin clients. It was designed with message delivery reliability and high performance in mind, current figures exceed 1 million msgs/second for the producer and 3 million msgs/second for the consumer.

librdkafka is licensed under the 2-clause BSD license.

KAFKA is a registered trademark of The Apache Software Foundation and has been licensed for use by librdkafka. librdkafka has no affiliation with and is not endorsed by The Apache Software Foundation.

Features

  • Full Exactly-Once-Semantics (EOS) support
  • High-level producer, including Idempotent and Transactional producers
  • High-level balanced KafkaConsumer (requires broker >= 0.9)
  • Simple (legacy) consumer
  • Admin client
  • Compression: snappy, gzip, lz4, zstd
  • SSL support
  • SASL (GSSAPI/Kerberos/SSPI, PLAIN, SCRAM, OAUTHBEARER) support
  • Full list of supported KIPs
  • Broker version support: >=0.8 (see Broker version compatibility)
  • Guaranteed API stability for C & C++ APIs (ABI safety guaranteed for C)
  • Statistics metrics
  • Debian package: librdkafka1 and librdkafka-dev in Debian and Ubuntu
  • RPM package: librdkafka and librdkafka-devel
  • Gentoo package: dev-libs/librdkafka
  • Portable: runs on Linux, MacOS X, Windows, Solaris, FreeBSD, AIX, ...

Documentation

NOTE: The master branch is actively developed, use latest release for production use.

Installation

Installing prebuilt packages

On Mac OSX, install librdkafka with homebrew:

$ brew install librdkafka

On Debian and Ubuntu, install librdkafka from the Confluent APT repositories, see instructions here and then install librdkafka:

$ apt install librdkafka-dev

On RedHat, CentOS, Fedora, install librdkafka from the Confluent YUM repositories, instructions here and then install librdkafka:

$ yum install librdkafka-devel

On Windows, reference librdkafka.redist NuGet package in your Visual Studio project.

For other platforms, follow the source building instructions below.

Installing librdkafka using vcpkg

You can download and install librdkafka using the vcpkg dependency manager:

# Install vcpkg if not already installed
$ git clone https://github.com/Microsoft/vcpkg.git
$ cd vcpkg
$ ./bootstrap-vcpkg.sh
$ ./vcpkg integrate install

# Install librdkafka
$ vcpkg install librdkafka

The librdkafka package in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please create an issue or pull request on the vcpkg repository.

Build from source

Requirements

The GNU toolchain
GNU make
pthreads
zlib-dev (optional, for gzip compression support)
libssl-dev (optional, for SSL and SASL SCRAM support)
libsasl2-dev (optional, for SASL GSSAPI support)
libzstd-dev (optional, for ZStd compression support)

NOTE: Static linking of ZStd (requires zstd >= 1.2.1) in the producer enables encoding the original size in the compression frame header, which will speed up the consumer. Use STATIC_LIB_libzstd=/path/to/libzstd.a ./configure --enable-static to enable static ZStd linking. MacOSX example: STATIC_LIB_libzstd=$(brew ls -v zstd | grep libzstd.a$) ./configure --enable-static

Building

  ./configure
  # Or, to automatically install dependencies using the system's package manager:
  # ./configure --install-deps
  # Or, build dependencies from source:
  # ./configure --install-deps --source-deps-only

  make
  sudo make install

NOTE: See README.win32 for instructions how to build on Windows with Microsoft Visual Studio.

NOTE: See CMake instructions for experimental CMake build (unsupported).

Usage in code

See getting Started with Apache Kafka and C/C++ for a basic tutorial.

  1. Refer to the examples directory for code using:

    • Producers: basic producers, idempotent producers, transactional producers.
    • Consumers: basic consumers, reading batches of messages.
    • Performance and latency testing tools.
  2. Refer to the examples GitHub repo for code connecting to a cloud streaming data service based on Apache Kafka

  3. Link your program with -lrdkafka (C) or -lrdkafka++ (C++).

Commercial support

Commercial support is available from Confluent Inc

Community support

Only the latest official release is supported for community members.

File bug reports and feature requests using GitHub Issues.

Questions and discussions are welcome on the Discussions forum, and on the Confluent Community slack #clients channel.

Language bindings

See Powered by librdkafka for an incomplete list of librdkafka users.