【问题标题】:How to deserialize avro schema message in node.js如何在 node.js 中反序列化 avro 模式消息
【发布时间】:2021-09-06 14:21:46
【问题描述】:

我正在使用 kafka 从源接收数据,我正在开发用 Node.js 编写的消费者应用程序,并使用 kafka-node 连接到 kafka 服务器。另一方面,生产者是用Java 编写的,他们正在使用一些 kafka 流库来生成带有模式的 avro 消息。 我能够接收消息,但它们是 avro 序列化的,下面是我收到的序列化消息格式 -

value: '\u0000\u0000\u0001�H\u0002\u00142020-10-01\u0002\u000e1000001\u0002\u000e2668422\u000202021-06-21T09:34:19.003Z\u0000\u0002\u000e3010985\u0002T83dc24eb6aac\u0002.2021-06-21T09:34:20.453'

我正在尝试反序列化它,但无法使用 avsc npm 模块,因为 avsc 只接受缓冲区数据格式。我不确定 avro 消息数据格式的类型。

我们也有这些消息的模式注册。所以我只需要帮助来反序列化 node.js 中的消息我知道有 npm 模块avsc 它有助于对 avro 消息进行编码解码,但它仅适用于缓冲区。 请帮助我了解如何反序列化 Nodejs 中的 avro 消息。

谢谢!!!

【问题讨论】:

标签: node.js apache-kafka deserialization avro avsc


【解决方案1】:
const v8 = require("v8");

const str =
  "<'\u0000\u0000\u0001�H\u0002\u00142020-10-01\u0002\u000e1000001\u0002\u000e2668422\u000202021-06-21T09:34:19.003Z\u0000\u0002\u000e3010985\u0002T83dc24eb6aac\u0002.2021-06-21T09:34:20.453'>";

console.log(v8.deserialize(v8.serialize(str)));
console.log(`${Buffer.from(str, "utf8")}`);

【讨论】:

  • 现在给我&lt;' �H2020-10-011000001266842202021-06-21T09:34:19.003Z 3010985T83dc24eb6aac.2021-06-21T09:34:20.453'&gt;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-31
  • 2020-11-22
  • 2017-12-02
  • 1970-01-01
  • 2019-04-11
  • 2019-08-03
  • 2019-11-25
相关资源
最近更新 更多