当前位置: 首页 > 知识库问答 >
问题:

Kafka Avro反序列化器,带有本地模式文件

赵鸿畴
2023-03-14

背景:我使用SpringKafka实现了基于Avro的消费者和生产者。其他重要组件:Kafka-Broker、Zoo监管人和模式注册表在docker容器中运行。这对我来说非常有效。

我想要的:我想要一个KafkaAvroDeserializer(在Consumer中),它应该独立于模式注册表。在我的例子中,我有一个不会更改的avroSchema文件。因此,我想取消在Consumer端使用模式注册表的这一额外步骤,而是使用本地模式文件

共有1个答案

万开畅
2023-03-14

如果生产者序列化程序使用架构注册表,则使用者也应该使用。Avro 要求您具有读取器和编写器架构。

如果使用者由于某种原因无法通过网络访问注册表,则需要使用 ByteArrayDeserializer,然后您将从要解析的记录部分获取 byte[] 位置 5(0x0 4 字节架构整数 ID)之后的字节片。

然后,从Avro API,您可以使用< code>GenericDatumReader以及本地< code>Schema引用来获取< code>GenericRecord实例,但这将假设您的读取器和编写器架构完全相同(但这不应该是真的,因为生成器可以随时更改架构)。

或者,您可以从您拥有的架构创建 SpecificRecord,并将 KafkaAvroDeserializer 配置为使用该架构。

 类似资料:
  • 我有一个Pojo对象,由Jersey使用jackson序列化: 序列化产生了一个像这样的Json: 但是,当我尝试像这样反序列化来自客户端的消息时: 我得到以下错误: 无法识别的字段“键”(类com.example.server.api.书摘),未标记为可忽略 我不知道问题是来自服务器生成的JSOn还是来自客户端的反序列化。 您知道问题是什么以及如何纠正吗? 非常谢谢。

  • 我们希望序列化Java类的模式,以便任何字段或类上存在的所有注释也序列化到模式中。 我没有找到这样做的工具。 Avro不处理非字符串映射键,FasterXML不处理循环引用。它们都不会将注释序列化到模式中。 是否有任何Java JSON(反)序列化程序可以做到这一点?

  • 我试图将Kafka中的Avro消息反序列化为从Avro模式生成的POJO。我正在使用Kafkaavroderializer进行此转换。 我可以在

  • 但它抛出了一个异常: JSONMappingException:意外标记(VALUE_NUMBER_INT),预期的value_string:预期的数组或字符串。 如何将epoch反序列化为?我想补充一点,如果将datatype从更改为,它可以非常好地工作。因此,最好反序列化到并创建getter和setter,它们将执行到的转换。

  • I'va是一个OID接口,可以由许多具体类型实现: 现在我有一个具有两个字段的对象,一个使用抽象接口类型(OID)定义,另一个使用具体类型(MyOID)定义 我想使用jackson以不同的方式序列化/反序列化字段,无论它们是使用抽象接口类型还是具体类型定义的: 注意,被序列化,包括类型信息(多态序列化),而被序列化为文本 为此,我将OID接口注释为: 并为每个具体类型分配了类型id: 最后,对容器

  • 问题内容: 我有一个具有以下结构的User对象: 我有一个具有以下结构的JSON字符串: 属性的键是字符串,属性的值可以是字符串,整数,数组,布尔值,映射等。 我尝试像这样用Gson反序列化此JSON字符串: 字段“ id”和“名称”已正确注入,但字段“属性”保持为空。 你知道我在做什么错吗?在此先感谢您的帮助! 问题答案: 对我来说这段代码: 打印此: 但是,请记住,我在解析的文件中剥离了包装的

  • 我在两个独立的AVCS模式文件中定义了记录的两个版本。我使用命名空间来区分版本SimpleV1.avsc 示例JSON 版本2只是有一个带有默认值的附加描述字段。 SimpleV2.avsc 示例JSON 这两个模式都序列化为Java类。在我的示例中,我将测试向后兼容性。V1写入的记录应由使用V2的读取器读取。我希望看到插入默认值。只要我不使用枚举,这就可以工作。 检查读者作家兼容性方法确认模式是

  • 我想反序列化表单中的类: 其中文本是加密的,反序列化应该在重建TestFieldEncryptedMessage实例之前取消对值的加密。 我采用的方法非常类似于:https://github.com/codesqueak/jackson-json-crypto 也就是说,我正在构建一个扩展SimpleModule的模块: 如您所见,设置了两个修饰符:EncryptedSerializerModif