首页 > 解决方案 > 如何在 Spring Kafka 中以编程方式设置 JsonDeserializer TypeValue 方法

问题描述

因此,我无法仅使用 yaml 为 JsonSerializer 配置 JavaType 方法。尚不确定原因,但与此同时我如何以编程方式设置它?

我已经在文档中看到了它的代码,但是这段代码到底需要在哪里运行?

Spring Kafka:JsonDeserializer 没有获取 TRUSTED_PACKAGE 配置

这是我到目前为止所尝试的。 Kafka Spring Deserialzer returnType 静态方法从未被调用

PS 我在 Spring Boot 2.1.8 上,所以现在不能轻易地使用更新的方式来使用属性。

标签: javaspring-bootapache-kafkaspring-kafka

解决方案


要在旧的 Boot 版本中获得此功能,您需要将 2.5 中的代码复制JsonDeserializer到自定义反序列化器中 - 这typeFunction是 2.5 中添加的。

以编程方式创建反序列化器时,必须直接将其添加到消费者工厂。请参阅文档

对于更复杂或更特殊的情况,KafkaConsumer(以及因此,KafkaProducer)提供重载的构造函数来分别接受键和值的序列化器和反序列化器实例。

当您使用此 API 时,DefaultKafkaProducerFactory 和 DefaultKafkaConsumerFactory 还提供属性(通过构造函数或 setter 方法)将自定义 Serializer 和 Deserializer 实例注入目标 Producer 或 Consumer。此外,您可以通过构造函数传入 Supplier 或 Supplier 实例——这些 Supplier 在创建每个 Producer 或 Consumer 时被调用。

创建一个DefaultKafkaConsumerFactory @Bean(覆盖引导的默认值)。


推荐阅读