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}