README.md 8.3 KB
Newer Older
M
Magnus Edenhill 已提交
1 2
librdkafka - the Apache Kafka C/C++ client library
==================================================
3

M
Magnus Edenhill 已提交
4
Copyright (c) 2012-2019, [Magnus Edenhill](http://www.edenhill.se/).
5 6 7

[https://github.com/edenhill/librdkafka](https://github.com/edenhill/librdkafka)

M
Magnus Edenhill 已提交
8
**librdkafka** is a C library implementation of the
L
László Várady 已提交
9
[Apache Kafka](https://kafka.apache.org/) protocol, providing Producer, Consumer
M
Magnus Edenhill 已提交
10
and Admin clients. It was designed with message delivery reliability
M
Magnus Edenhill 已提交
11
and high performance in mind, current figures exceed 1 million msgs/second for
M
Magnus Edenhill 已提交
12
the producer and 3 million msgs/second for the consumer.
13

14
**librdkafka** is licensed under the 2-clause BSD license.
M
Magnus Edenhill 已提交
15

M
Magnus Edenhill 已提交
16
# Features #
M
Magnus Edenhill 已提交
17 18 19
  * High-level producer
  * High-level balanced KafkaConsumer (requires broker >= 0.9)
  * Simple (legacy) consumer
M
Magnus Edenhill 已提交
20
  * Admin client
21
  * Compression: snappy, gzip, lz4, zstd
M
Magnus Edenhill 已提交
22
  * [SSL](https://github.com/edenhill/librdkafka/wiki/Using-SSL-with-librdkafka) support
M
Magnus Edenhill 已提交
23
  * [SASL](https://github.com/edenhill/librdkafka/wiki/Using-SASL-with-librdkafka) (GSSAPI/Kerberos/SSPI, PLAIN, SCRAM, OAUTHBEARER) support
M
Magnus Edenhill 已提交
24
  * Broker version support: >=0.8 (see [Broker version compatibility](https://github.com/edenhill/librdkafka/wiki/Broker-version-compatibility))
25
  * Stable C & C++ APIs (ABI safety guaranteed for C)
26
  * [Statistics](https://github.com/edenhill/librdkafka/blob/master/STATISTICS.md) metrics
M
Magnus Edenhill 已提交
27
  * Debian package: librdkafka1 and librdkafka-dev in Debian and Ubuntu
M
Magnus Edenhill 已提交
28
  * RPM package: librdkafka and librdkafka-devel
29
  * Gentoo package: dev-libs/librdkafka
30
  * Portable: runs on Linux, OSX, Win32, Solaris, FreeBSD, AIX, ...
31

M
Magnus Edenhill 已提交
32 33 34 35 36 37 38 39 40 41 42
# Documentation

 * Public API in [C header](src/rdkafka.h) and [C++ header](src-cpp/rdkafkacpp.h).
 * Introduction and manual in [INTRODUCTION.md](https://github.com/edenhill/librdkafka/blob/master/INTRODUCTION.md).
 * Configuration properties in
[CONFIGURATION.md](https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md).
 * Statistics metrics in [STATISTICS.md](https://github.com/edenhill/librdkafka/blob/master/STATISTICS.md).
 * [Frequently asked questions](https://github.com/edenhill/librdkafka/wiki).

**NOTE**: The `master` branch is actively developed, use latest [release](https://github.com/edenhill/librdkafka/releases) for production use.

43

M
Magnus Edenhill 已提交
44
# Installation
45

M
Magnus Edenhill 已提交
46
## Installing prebuilt packages
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73

On Mac OSX, install librdkafka with homebrew:

```bash
$ brew install librdkafka
```

On Debian and Ubuntu, install librdkafka from the Confluent APT repositories,
see instructions [here](https://docs.confluent.io/current/installation/installing_cp/deb-ubuntu.html#get-the-software) and then install librdkafka:

 ```bash
 $ apt install librdkafka-dev
 ```

On RedHat, CentOS, Fedora, install librdkafka from the Confluent YUM repositories,
instructions [here](https://docs.confluent.io/current/installation/installing_cp/rhel-centos.html#get-the-software) and then install librdkafka:

```bash
$ yum install librdkafka-devel
```

On Windows, reference [librdkafka.redist](https://www.nuget.org/packages/librdkafka.redist/) NuGet package in your Visual Studio project.


For other platforms, follow the source building instructions below.


M
Magnus Edenhill 已提交
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
## 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_zstd=/path/to/libzstd.a ./configure --enable-static`
          to enable static ZStd linking.
          MacOSX example:
          `STATIC_LIB_zstd=$(brew ls -v zstd | grep libzstd.a$) ./configure --enable-static`


94 95
### Building

M
Magnus Edenhill 已提交
96
      ./configure
97 98 99 100 101
      # 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

M
Magnus Edenhill 已提交
102
      make
M
Magnus Edenhill 已提交
103
      sudo make install
104 105


M
Magnus Edenhill 已提交
106 107 108
**NOTE**: See [README.win32](README.win32) for instructions how to build
          on Windows with Microsoft Visual Studio.

109 110 111 112
**NOTE**: See [CMake instructions](packaging/cmake/README.md) for experimental
          CMake build (unsupported).


M
Magnus Edenhill 已提交
113
## Usage in code
114

115
1. Refer to the [examples directory](examples/) for code using:
116

117 118 119 120 121 122 123
* Producers: basic producers, idempotent producers
* Consumers: basic consumers, reading batches of messages
* Performance tester

2. Refer to the [examples GitHub repo](https://github.com/confluentinc/examples/tree/master/clients/cloud/c) for code connecting to a cloud streaming data service based on Apache Kafka

3. Link your program with `-lrdkafka` (C) or `-lrdkafka++` (C++).
M
Magnus Edenhill 已提交
124

M
Magnus Edenhill 已提交
125

M
Magnus Edenhill 已提交
126
## Commercial support
127

M
Magnus Edenhill 已提交
128
Commercial support is available from [Confluent Inc](https://www.confluent.io/)
129 130


M
Magnus Edenhill 已提交
131
## Community support
132

M
Magnus Edenhill 已提交
133
**Only the [last official release](https://github.com/edenhill/librdkafka/releases) is supported for community members.**
134

M
Magnus Edenhill 已提交
135 136
File bug reports, feature requests and questions using
[GitHub Issues](https://github.com/edenhill/librdkafka/issues)
137

L
László Várady 已提交
138
Questions and discussions are also welcome on the [Confluent Community slack](https://launchpass.com/confluentcommunity) #clients channel, or irc.freenode.org #apache-kafka channel.
139 140


M
Magnus Edenhill 已提交
141
# Language bindings #
M
Magnus Edenhill 已提交
142

M
Magnus Edenhill 已提交
143 144
  * C#/.NET: [confluent-kafka-dotnet](https://github.com/confluentinc/confluent-kafka-dotnet) (based on [rdkafka-dotnet](https://github.com/ah-/rdkafka-dotnet))
  * C++: [cppkafka](https://github.com/mfontanini/cppkafka)
145
  * Common Lisp: [cl-rdkafka](https://github.com/SahilKang/cl-rdkafka)
M
Magnus Edenhill 已提交
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
  * D (C-like): [librdkafka](https://github.com/DlangApache/librdkafka/)
  * D (C++-like): [librdkafkad](https://github.com/tamediadigital/librdkafka-d)
  * Erlang: [erlkaf](https://github.com/silviucpp/erlkaf)
  * Go: [confluent-kafka-go](https://github.com/confluentinc/confluent-kafka-go)
  * Haskell (kafka, conduit, avro, schema registry): [hw-kafka](https://github.com/haskell-works/hw-kafka)
  * Lua: [luardkafka](https://github.com/mistsv/luardkafka)
  * Node.js: [node-rdkafka](https://github.com/Blizzard/node-rdkafka)
  * OCaml: [ocaml-kafka](https://github.com/didier-wenzek/ocaml-kafka)
  * PHP: [phpkafka](https://github.com/EVODelavega/phpkafka)
  * PHP: [php-rdkafka](https://github.com/arnaud-lb/php-rdkafka)
  * Python: [confluent-kafka-python](https://github.com/confluentinc/confluent-kafka-python)
  * Python: [PyKafka](https://github.com/Parsely/pykafka)
  * Ruby: [Hermann](https://github.com/reiseburo/hermann)
  * Ruby: [rdkafka-ruby](https://github.com/appsignal/rdkafka-ruby)
  * Rust: [rust-rdkafka](https://github.com/fede1024/rust-rdkafka)
  * Tcl: [KafkaTcl](https://github.com/flightaware/kafkatcl)
  * Swift: [Perfect-Kafka](https://github.com/PerfectlySoft/Perfect-Kafka)

# Users of librdkafka #
M
Magnus Edenhill 已提交
165

M
Magnus Edenhill 已提交
166 167 168
  * [kafkacat](https://github.com/edenhill/kafkacat) - Apache Kafka swiss army knife
  * [Wikimedia's varnishkafka](https://github.com/wikimedia/varnishkafka) - Varnish cache web log producer
  * [Wikimedia's kafkatee](https://github.com/wikimedia/analytics-kafkatee) - Kafka multi consumer with filtering and fanout
L
László Várady 已提交
169
  * [rsyslog](https://www.rsyslog.com)
170
  * [syslog-ng](https://www.syslog-ng.com)
L
László Várady 已提交
171
  * [collectd](https://collectd.org)
M
Magnus Edenhill 已提交
172
  * [logkafka](https://github.com/Qihoo360/logkafka) - Collect logs and send to Kafka
L
László Várady 已提交
173
  * [redBorder](https://redborder.com)
M
Magnus Edenhill 已提交
174 175 176 177
  * [Headweb](http://www.headweb.com/)
  * [Produban's log2kafka](https://github.com/Produban/log2kafka) - Web log producer
  * [fuse_kafka](https://github.com/yazgoo/fuse_kafka) - FUSE file system layer
  * [node-kafkacat](https://github.com/Rafflecopter/node-kafkacat)
L
László Várady 已提交
178 179
  * [OVH](https://ovh.com) - [AntiDDOS](https://www.slideshare.net/hugfrance/hugfr-6-oct2014ovhantiddos)
  * [otto.de](https://www.otto.de)'s [trackdrd](https://github.com/otto-de/trackrdrd) - Varnish log reader
M
Magnus Edenhill 已提交
180 181 182
  * [Microwish](https://github.com/microwish) has a range of Kafka utilites for log aggregation, HDFS integration, etc.
  * [aidp](https://github.com/weiboad/aidp) - kafka consumer embedded Lua scripting language in data process framework
  * [Yandex ClickHouse](https://github.com/yandex/ClickHouse)
L
László Várady 已提交
183
  * [NXLog](https://nxlog.co/) - Enterprise logging system, Kafka input/output plugin.
M
Magnus Edenhill 已提交
184 185 186
  * large unnamed financial institutions
  * and many more..
  * *Let [me](mailto:rdkafka@edenhill.se) know if you are using librdkafka*