Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何解决卡夫卡·阿夫罗的反序列化问题_Java_Apache Kafka_Avro_Confluent Platform_Confluent Schema Registry - Fatal编程技术网

Java 如何解决卡夫卡·阿夫罗的反序列化问题

Java 如何解决卡夫卡·阿夫罗的反序列化问题,java,apache-kafka,avro,confluent-platform,confluent-schema-registry,Java,Apache Kafka,Avro,Confluent Platform,Confluent Schema Registry,我们在使用kafka avro consumer和producer的应用程序中有一个非常奇怪的行为 我们有一个正在运行合流安装的服务器。All是手动配置的,因此不使用汇合cli 在第二台服务器上,有一个正在运行的应用程序,它使用此合流安装通过Kafka topic接收请求。此请求被转换为数据库查询,并发送回带有特定数据的回复主题 在第三台服务器上有另一个应用程序,该应用程序将此请求发送到服务器2上的应用程序,并接收回复主题 综上所述: 服务器1合流安装 服务器2请求使用者和应答生产者应用程序 服

我们在使用kafka avro consumer和producer的应用程序中有一个非常奇怪的行为

我们有一个正在运行合流安装的服务器。All是手动配置的,因此不使用汇合cli

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

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

综上所述: 服务器1合流安装 服务器2请求使用者和应答生产者应用程序 服务器3请求发送方和回复消费者应用程序

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

我的测试回复主题包含一个联合{null,bytes}文件字段。因此该字段是可选的,默认值为null,然后在注册表中注册模式。现在,如果文件值为null,则表示出现错误:

在处反序列化分区test-reply-topic-0的键/值时出错 偏移量0。如果需要,请通过记录继续 消耗原因:反序列化id为6的Avro消息时出错 详细信息:发现null,应为字节

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

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

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


非常感谢

很抱歉我回复晚了。结果证明,有反序列化问题的应用程序使用的是旧生成的java类。所以它使用了旧模式,以前没有联合类型

如果您可以为生产者和消费者共享完整的模式和代码,这将非常有用。您可能希望尝试清除主题并尝试重新总结。此错误通常发生在生产者发送的模式与SR中注册的模式不匹配时。很抱歉,我的回复太晚。结果证明,有反序列化问题的应用程序使用的是旧生成的java类。所以它使用了旧模式,以前没有联合类型。