high_level_kafka/lib.rs
1//! # High-level kafka client for rust.
2//!
3//! This crate provides a high-level kafka client for rust. It is built on top of the [rdkafka](https://docs.rs/rdkafka/0.23.0/rdkafka/) crate.
4//!
5//! ## Features
6//!
7//! * [x] Consumer
8//! * [x] Producer
9//! * [ ] Admin
10//! * [ ] Streams
11//!
12
13use std::collections::HashMap;
14
15use thiserror::Error;
16
17pub mod consumer;
18pub mod publisher;
19
20extern crate rdkafka;
21extern crate tokio;
22
23///
24/// Metadata for a consumed message
25///
26#[derive(Debug)]
27pub struct Metadata {
28 pub topic: String,
29 pub partition: i32,
30 pub offset: i64,
31 pub headers: HashMap<String, String>,
32}
33
34/// Error type for the crate
35///
36#[derive(Debug, Error)]
37pub enum KafkaError {
38 /// Wrapper for rd_kafka errors
39 #[error("Kafka error: {0}")]
40 Kafka(rdkafka::error::KafkaError),
41 /// Wrapper for serde_json errors
42 #[error("Serde error: {0}")]
43 Serde(serde_json::Error),
44}
45
46/// Result type for the crate
47pub enum KafkaResult<T> {
48 Ok(Option<(T, Metadata)>),
49 Err(KafkaError),
50}