Skip to main content

oxigdal_kafka/
lib.rs

1//! Apache Kafka integration for OxiGDAL
2//!
3//! This crate provides comprehensive Apache Kafka support for OxiGDAL, including:
4//!
5//! - **Producer**: Async producer with batching, partitioning, and compression
6//! - **Consumer**: Async consumer with consumer groups and offset management
7//! - **Schema Registry**: Avro schema management with evolution support
8//! - **Transactions**: Transactional producer/consumer with exactly-once semantics
9//!
10//! # Features
11//!
12//! - `producer` - Enable producer functionality (default)
13//! - `consumer` - Enable consumer functionality (default)
14//! - `schema-registry` - Enable Avro schema registry support
15//! - `transactions` - Enable transactional support
16//! - `compression-*` - Enable various compression algorithms
17//!
18//! # Example
19//!
20//! ```no_run
21//! use oxigdal_kafka::producer::{ProducerConfig, KafkaProducer};
22//!
23//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
24//! let config = ProducerConfig::builder()
25//!     .bootstrap_servers("localhost:9092")
26//!     .build()?;
27//!
28//! let producer = KafkaProducer::new(config).await?;
29//! producer.send("my-topic", Some(b"key".as_slice()), b"value").await?;
30//! # Ok(())
31//! # }
32//! ```
33
34#![cfg_attr(not(feature = "std"), no_std)]
35#![deny(missing_docs, unsafe_code, clippy::unwrap_used, clippy::panic)]
36#![warn(clippy::expect_used)]
37
38extern crate alloc;
39
40#[cfg(feature = "std")]
41extern crate std;
42
43pub mod config;
44pub mod error;
45
46#[cfg(feature = "producer")]
47pub mod producer;
48
49#[cfg(feature = "consumer")]
50pub mod consumer;
51
52#[cfg(feature = "schema-registry")]
53pub mod schema_registry;
54
55#[cfg(feature = "transactions")]
56pub mod transactions;
57
58mod utils;
59
60// Re-exports
61pub use error::{Error, Result};
62
63#[cfg(feature = "producer")]
64pub use producer::{KafkaProducer, ProducerConfig};
65
66#[cfg(feature = "consumer")]
67pub use consumer::{ConsumerConfig, KafkaConsumer};
68
69#[cfg(feature = "schema-registry")]
70pub use schema_registry::{SchemaRegistry, SchemaRegistryConfig};
71
72#[cfg(feature = "transactions")]
73pub use transactions::{TransactionConfig, TransactionalProducer};