Rust SDK: roxa-client
roxa-client — официальная Rust-библиотека поверх gRPC data-plane: администрирование топиков, produce/fetch, offsets, консюмер-группы, идемпотентный продюсер.
Другие языки
Отдельных SDK для Go/Java/Python нет и они не требуются для обмена сообщениями — используйте существующие Kafka-клиенты. Rust SDK нужен, когда хочется нативный gRPC-путь (меньше слоёв) или административные операции из кода.
Подключение
rust
use client::Client;
// без аутентификации:
let mut client = Client::connect("http://127.0.0.1:50051").await?;
// с аутентификацией data-plane:
let mut client = Client::connect_with_auth("http://broker:50051", "app", "secret").await?;
// TLS/mTLS:
let mut client = Client::connect_with_tls(endpoint, ca_pem, client_identity, domain, credentials).await?;Produce → Fetch
rust
use client::{Client, Durability, RecordInput};
let mut client = Client::connect("http://127.0.0.1:50051").await?;
client.create_topic("demo", 1, Durability::Default, None, None).await?;
let out = client
.produce("demo", Some(0), None, vec![
RecordInput::value(b"hello".to_vec()),
RecordInput::value(b"world".to_vec()),
])
.await?; // ack после durable-записи; out.base_offset == 0
let fetched = client.fetch("demo", 0, 0, 100).await?; // partition 0, from offset 0, max 100
for rec in fetched.records {
println!("{}: {:?}", rec.offset, rec.value);
}Что ещё умеет
| Фасет | Методы |
|---|---|
| admin | create_topic, list_topics, describe_topic, delete_topic, diagnostics, get_cluster_state, list_consumer_groups |
| producer | produce, init_producer_id, produce_idempotent |
| consumer | fetch, commit_offset, fetch_committed_offset, join_group, heartbeat, leave_group, get_assignment |
Идемпотентный продюсер: init_producer_id() → produce_idempotent(...) — повтор той же пачки (ретрай) не создаёт дублей в рамках сессии.