gpt4 book ai didi

java - 如何解决Kafka Avro反序列化问题

转载 作者:行者123 更新时间:2023-12-02 10:50:27 25 4
gpt4 key购买 nike

我们使用 kafka avro 消费者和生产者的应用程序有一个非常奇怪的行为。

我们有一台正在运行融合安装的服务器。全部都是手动配置的,因此不使用 confluence cli。

在第二台服务器上,正在运行一个应用程序,该应用程序使用此融合安装通过 Kafka 主题接收请求。该请求被转换为数据库查询,并发送回带有特定数据的回复主题。

在第三台服务器上有另一个应用程序,该应用程序将此请求发送到 2 号服务器上的应用程序并接收回复主题。

总结一下:服务器 1(Confluence 安装)服务器 2(请求消费者和回复生产者应用程序)服务器3(请求发送者和回复消费者应用程序)

我为我们开发了一个 kafka API,所有这些 API 都使用具有汇合 avro 序列化器和反序列化器的消费者和生产者。当我现在从服务器 3 上的应用程序生成请求主题时,服务器 2 上的应用程序接收请求,将其转换为数据库查询并发回与请求主题不同的回复主题。现在,我在服务器 3 上的应用程序应该接收 test-reply-topic 并将其反序列化。

我的测试回复主题包含一个“union{null, bytes} file”字段。所以该字段是可选的,默认值为null,然后schema被注册到注册表中。现在,如果文件值为 null,则会出现错误:

Error deserializing key/value for partition test-reply-topic-0 at offset 0. If needed, please seek past the record to continue consumption. Cause: Error deserializing Avro message for id 6 Detailed: Found null, expecting bytes

如果它包含字节,则它正在工作。

奇怪的是,如果我在本地计算机上尝试相同的操作,它会使用 file=null 和 file=some 字节。所以我在生产者和消费者中使用相同的 kafka 代理、相同的 API 和相同的值。它正在从服务器和本地计算机上的注册表请求相同的架构 ID。

也许有人暗示了问题可能是什么,我几天来一直在寻找这个问题,但没有找到解决方案。

非常感谢!

最佳答案

抱歉我回复晚了。事实证明,存在反序列化问题的应用程序使用了旧的生成的 java 类。因此它使用旧的模式,以前没有联合类型。

关于java - 如何解决Kafka Avro反序列化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52224395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com