提问人:Ashok 提问时间:9/7/2023 最后编辑:Ashok 更新时间:9/8/2023 访问量:21
直接在 FlexBuffer Map 上运行的中间日志服务
intermediate log services working directly on flexbuffer map
问:
我们有一个自定义日志管道,目前,每个步骤/服务都会解析传入的 json 并修改/添加标签。我正在探索降低这种序列化/反序列化成本的选项,因为某些服务不会修改数据,只需要读取/路由日志。
我正在尝试 flexbuffers(因为日志来自不同的服务并且不共享相同的架构)。
我正在考虑转换为此矢量并将其发送到下一个服务。下游服务可以使用 反序列化为其他格式。但我正在寻找将此向量直接用作 flexbuffer::MapReader 而不是通过中间步骤的方法。flexbuffers::to_vec()
flexbuffers::from_slice()
fn test_flexbuffer_map() {
let log = serde_json::json!({"time": 123, "level": "INFO", "extra" : {"message" : "Hello! World"}});
let vec_fb = flexbuffers::to_vec(&log).unwrap();
let map_fb = ??;
let level = map_fb.idx("level"); // want to access fields directly
}
--更新--
不确定这是否是正确的方法,但这有效。
let u8_fb: &[u8] = &vec_fb;
let map_fb = flexbuffers::Reader::get_root(u8_fb).unwrap().as_map();
let level = map_fb.idx("level").as_str();
println!("{level}");
答: 暂无答案
评论
HashMap