Spring Kafka 序列化器配置

Spring Kafka serialiser config

我从 spring-kafka 2.7.2 升级到 2.8.4。 我发现我的代码在我在测试中预先创建序列化程序的地方中断了。


        var serialiser = new KafkaAvroSerializer(schemaRegistryClient, mapOfProperties);

// I then pass this to my KafkaTemplate
...
...

KafkaTemplate 然后将序列化程序传递给 DefaultKafkaProducerFactory。 DefaultKafkaProducerFactory 不知道序列化器是否已经配置,它会尝试再次调用 configure() ,但这次使用的是一个空映射,它会因为缺少一些强制属性而失败,例如schema.registry.url.

前进的方向是停止预配置序列化器并将序列化器配置委托给 spring 吗?

我进行了一些挖掘,发现了这个我认为相关的 PR。 https://github.com/spring-projects/spring-kafka/pull/1907

遗憾的是序列化程序没有 isConfigured() 标志来防止重新配置。

嗯,我建议你扩展 KafkaAvroSerializer class 并在其中引入 configured 属性,就像我们在 JsonSerializer 中所做的那样。

此外:请随时提出 GH 问题,因此我们可能会介绍类似 setConfigureSerializers(boolean) 的内容。显然,如果 Apache Kafka 没有通过配置明确提供它们,则不会进行配置。另外,似乎并非所有序列化器都不受重新配置的影响。