Skip to content

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);
}

Что ещё умеет

ФасетМетоды
admincreate_topic, list_topics, describe_topic, delete_topic, diagnostics, get_cluster_state, list_consumer_groups
producerproduce, init_producer_id, produce_idempotent
consumerfetch, commit_offset, fetch_committed_offset, join_group, heartbeat, leave_group, get_assignment

Идемпотентный продюсер: init_producer_id()produce_idempotent(...) — повтор той же пачки (ретрай) не создаёт дублей в рамках сессии.