1 个不稳定版本
0.1.0 | 2021 年 2 月 12 日 |
---|
#1418 在 编码
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(目前)
- 变量大小类型如
VARLONG
和COMPACT_STRING
不支持(目前)
依赖
~0.4–1MB
~23K SLoC