将 Quarkus 与 Kafka 和模式注册表结合使用时,如何覆盖 KafkaAvroDeserializerConfig.SPECIFIC_AVRO_VALUE_TYPE_CONFIG

问题描述 投票:0回答:1

我们有一个 Quarkus 项目,它使用 Apache Kafka 以及 Confluence 模式注册表和 Avro。 它使用 Quarkus 代码生成机制从 Avro 模式生成 Java 文件,并从某个 Kafka 主题进行消费。

本主题的制作者对 Avro 架构中的命名空间进行了更改。这导致我们的消费者应用程序出现反序列化异常。

Could not find class X specified in writer's schema whilst finding reader's schema for a SpecificRecord.

由于类的生成方式,我知道这是 Java 特有的问题。我使用 Scala 的同事重写了 KafkaAvroDeserializerConfig.SPECIFIC_AVRO_VALUE_TYPE_CONFIG 来解决这个问题。

是否可以在 Quarkus/smallrye 中覆盖此配置? 类似于

mp.messaging.incoming.[channel].specific.avro.value.type

我还应该将

mp.messaging.incoming.[channel].specific.avro.reader
设置为
true
吗?

还有其他方法可以缓解这个问题吗?

我尝试在读者模式中使用别名,但仍然遇到相同的异常。我也尝试过“设置”

mp.messaging.incoming.[channel].specific.avro.value.type
,但不确定这个属性是否确实存在,并且我仍然遇到相同的异常。

java apache-kafka quarkus confluent-schema-registry smallrye-reactive-messaging
1个回答
0
投票

该项目使用旧版本的 kafka-avro-serializer。升级到更高版本后(https://github.com/confluenceinc/schema-registry/issues/3001已修复的版本)设置属性

mp.messaging.incoming.[channel].specific.avro.value.type
实际上按预期工作。

© www.soinside.com 2019 - 2024. All rights reserved.