1 个不稳定版本

0.1.0 2021 年 2 月 12 日

#1418编码

Apache-2.0 OR MIT

35KB
973 代码行

kafka-serde

Rust 对 Kafka 协议的 serde 实现。

这允许您对 Kafka 负载进行序列化和反序列化。它可以作为一个原生 Rust Kafka 客户端的构建块。

使用方法

序列化 Kafka 请求头

use serde::Serialize;
use std::io::{Write, Cursor};

#[derive(Serialize, Debug)]
struct RequestHeader {
    api_key: i16,
    api_version: i16,
    correlation_id: i32,
    client_id: &'static str,
}

let req = RequestHeader {
    api_key: 0,
    api_version: 0,
    correlation_id: 1,
    client_id: ""
};

let mut x = Cursor::new(Vec::<u8>::new());
kafka_serde::to_writer(x, &req).unwrap();

反序列化 Kafka 响应头

use serde::Serialize;

#[derive(Deserialize, Default, Debug, Clone)]
struct ResponseHeader {
    pub correlation: i32,
}

let data : Vec<u8> = [0x0, 0x0, 0x0, 0x1];
let resp: ResponseHeader = kafka_serde::from_bytes(&data).unwrap();

支持

所有 Kafka 协议类型都在 这里 列出

  • 支持固定大小类型,并将其映射到它们的原生 Rust 类型(例如 int8 等)。
  • 字符串可以反序列化为 String&str,字节同理
  • 不支持 UUID(目前)
  • 变量大小类型如 VARLONGCOMPACT_STRING 不支持(目前)

依赖

~0.4–1MB
~23K SLoC