{"id":25369717,"url":"https://github.com/1plam/kafka-oxide","last_synced_at":"2025-06-15T20:42:18.092Z","repository":{"id":276601917,"uuid":"929389274","full_name":"1plam/kafka-oxide","owner":"1plam","description":"An ergonomic Rust wrapper for Apache Kafka and Redpanda.","archived":false,"fork":false,"pushed_at":"2025-03-21T14:37:15.000Z","size":18,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"development","last_synced_at":"2025-04-09T07:17:11.740Z","etag":null,"topics":["kafka","redpanda","rust","wrapper-library"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/1plam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-08T12:42:37.000Z","updated_at":"2025-03-21T14:37:16.000Z","dependencies_parsed_at":"2025-02-09T11:19:32.589Z","dependency_job_id":"d5833ce4-f594-40c1-94a4-58bb5d5d4716","html_url":"https://github.com/1plam/kafka-oxide","commit_stats":null,"previous_names":["1plam/kafka-oxide"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/1plam/kafka-oxide","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1plam%2Fkafka-oxide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1plam%2Fkafka-oxide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1plam%2Fkafka-oxide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1plam%2Fkafka-oxide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/1plam","download_url":"https://codeload.github.com/1plam/kafka-oxide/tar.gz/refs/heads/development","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1plam%2Fkafka-oxide/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260046696,"owners_count":22950897,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["kafka","redpanda","rust","wrapper-library"],"created_at":"2025-02-15T01:30:44.973Z","updated_at":"2025-06-15T20:42:18.068Z","avatar_url":"https://github.com/1plam.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"## kafka-oxide\n\nAn ergonomic and type-safe Rust wrapper for Apache Kafka and Redpanda, designed for a seamless developer experience with\nsafety in mind.\n\n\u003e [!IMPORTANT]\n\u003e This project is currently under development and may not work as intended. Stay tuned for updates and improvements.\n\n## Planned Key Features\n\n- 🦀 **Type-safe Interface**: Leverage Rust's type system for compile-time message validation\n- 🔗 **Robust Connection Management**: Automatic reconnection handling with configurable retry policies\n- 📝 **Observability**: Structured logging with `tracing` and detailed metrics\n- ⏳ **Modern Async Runtime**: Built on `tokio` with full async/await support\n- ⚠️ **Error Handling**: Rich error types with detailed context and recovery suggestions\n- 🌐 **Unified Protocol**: Seamless support for both Apache Kafka and Redpanda\n- 🔒 **Security**: Built-in support for SASL, SSL/TLS, and custom authentication mechanisms\n- 🎯 **Zero-Copy**: Optimized message handling with minimal memory overhead\n\n## Installation\n\nAdd `kafka-oxide` to your `Cargo.toml`:\n\n```toml\n[dependencies]\nkafka-oxide = \"0.1\"\n```\n\n\n## Quick Start\n\n### Producer Example\n\nHere's how you can publish a message to Kafka using `kafka-oxide`:\n\n```rust\nuse kafka_oxide::{Producer, Record};\n\n#[tokio::main]\nasync fn main() -\u003e Result\u003c(), Box\u003cdyn std::error::Error\u003e\u003e {\n    let producer = Producer::builder()\n        .bootstrap_servers(\u0026[\"localhost:9092\"])\n        .client_id(\"my-app\")\n        .build()?;\n\n    let record = Record::new(\"my-topic\", b\"Hello, Kafka!\".to_vec());\n    producer.send(record).await?;\n    \n    Ok(())\n}\n```\n\n### Consumer Example\n\nTo consume messages from Kafka, use the Consumer struct:\n\n```rust\nuse kafka_oxide::{Consumer, Message};\n\n#[tokio::main]\nasync fn main() -\u003e Result\u003c(), Box\u003cdyn std::error::Error\u003e\u003e {\n    let consumer = Consumer::builder()\n        .bootstrap_servers(\u0026[\"localhost:9092\"])\n        .group_id(\"my-consumer-group\")\n        .build()?;\n\n    consumer.subscribe(\u0026[\"my-topic\"])?;\n\n    while let Some(message) = consumer.next().await {\n        let message = message?;\n        println!(\"Received message: {:?}\", message);\n        \n        consumer\n            .commit_message(\u0026message, Default::default())\n            .await?;\n    }\n\n    Ok(())\n}\n```\n\n_This project is licensed under [Apache License, Version 2.0](.github/LICENSE)_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1plam%2Fkafka-oxide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F1plam%2Fkafka-oxide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1plam%2Fkafka-oxide/lists"}