1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
//! # rust-rdkafka //! Kafka client library for Rust based on [librdkafka]. //! //! ## The library //! `rust-rdkafka` provides a safe Rust interface to librdkafka. //! It currently exports a subset of the funcionalities provided by librdkafka 0.9.2. //! //! `rust-rdkafka` provides low level and high level consumers and producers. Low level: //! //! * `BaseConsumer`: simple wrapper around the librdkafka consumer. It requires to be //! periodically `poll()`ed in order to execute callbacks, rebalance and receive messages. //! * `BaseProducer`: simple wrapper around the librdkafka producer. As in the consumer case, //! the user must call `poll()` periodically to execute delivery callbacks. //! //! High level: //! //! * `StreamConsumer`: it returns a [`stream`] of messages and takes care of polling the consumer //! internally. //! * `FutureProducer`: it returns a [`future`] that will be completed once the message is //! delivered to Kafka (or failed). //! //! [librdkafka]: https://github.com/edenhill/librdkafka //! [futures]: https://github.com/alexcrichton/futures-rs //! [`future`]: https://docs.rs/futures/0.1.3/futures/trait.Future.html //! [`stream`]: https://docs.rs/futures/0.1.3/futures/stream/trait.Stream.html //! //! *Warning*: the library is under active development and the APIs are likely to change. //! //! ## Installation //! //! Add this to your `Cargo.toml`: //! //! ```toml //! [dependencies] //! rdkafka = "^0.5.0" //! ``` //! //! This crate will compile librdkafka from sources and link it statically to your //! executable. To compile librdkafka you'll need: //! //! * the GNU toolchain //! * GNU `make` //! * `pthreads` //! * `zlib` //! * `libssl-dev`: optional, *not* included by default (feature: `ssl`). //! * `libsasl2-dev`: optional, *not* included by default (feature: `sasl`). //! //! To enable ssl and sasl, use the `features` field in `Cargo.toml`. Example: //! //! ```toml //! [dependencies.rdkafka] //! version = "^0.5.0" //! features = ["ssl", "sasl"] //! ``` //! //! ## Compiling from sources //! //! To compile from sources, you'll have to update the submodule containing librdkafka: //! //! ```bash //! git submodule update --init //! ``` //! //! and then compile using `cargo`, selecting the features that you want. Example: //! //! ```bash //! cargo build --features "ssl sasl" //! ``` //! //! ## Examples //! //! You can find examples in the `examples` folder. To run them: //! //! ```bash //! cargo run --example <example_name> -- <example_args> //! ``` //! //! ## Tests //! //! The unit tests can run without a Kafka broker present: //! //! ```bash //! cargo test --lib //! ``` //! //! To run the full suite: //! //! ```bash //! cargo test //! ``` //! //! In this case there is a broker expected to be running on //! `localhost:9292`. Travis currently only runs the unit tests. //! #[macro_use] extern crate log; pub mod client; pub mod config; pub mod consumer; pub mod error; pub mod message; pub mod metadata; pub mod producer; pub mod topic_partition_list; pub mod util;