java - 如何在 Spring Kafka 中以编程方式设置 JsonDeserializer TypeValue 方法
问题描述
因此,我无法仅使用 yaml 为 JsonSerializer 配置 JavaType 方法。尚不确定原因,但与此同时我如何以编程方式设置它?
我已经在文档中看到了它的代码,但是这段代码到底需要在哪里运行?
Spring Kafka:JsonDeserializer 没有获取 TRUSTED_PACKAGE 配置
这是我到目前为止所尝试的。 Kafka Spring Deserialzer returnType 静态方法从未被调用
PS 我在 Spring Boot 2.1.8 上,所以现在不能轻易地使用更新的方式来使用属性。
解决方案
要在旧的 Boot 版本中获得此功能,您需要将 2.5 中的代码复制JsonDeserializer
到自定义反序列化器中 - 这typeFunction
是 2.5 中添加的。
以编程方式创建反序列化器时,必须直接将其添加到消费者工厂。请参阅文档。
对于更复杂或更特殊的情况,KafkaConsumer(以及因此,KafkaProducer)提供重载的构造函数来分别接受键和值的序列化器和反序列化器实例。
当您使用此 API 时,DefaultKafkaProducerFactory 和 DefaultKafkaConsumerFactory 还提供属性(通过构造函数或 setter 方法)将自定义 Serializer 和 Deserializer 实例注入目标 Producer 或 Consumer。此外,您可以通过构造函数传入 Supplier 或 Supplier 实例——这些 Supplier 在创建每个 Producer 或 Consumer 时被调用。
创建一个DefaultKafkaConsumerFactory
@Bean
(覆盖引导的默认值)。
推荐阅读
- php - 如何在保持宽度和高度比的同时调整图像大小
- python - 打印同一索引中重复出现项目的所有子列表
- javascript - 读取文件时出现节点内存问题
- javascript - Node 服务器上的视频流仅在 Firefox 上无法正常工作?
- android - 如何在片段内的 recyclerview 上使用简单的 onscroll 侦听器
- heroku - Cassandra Astra 安全部署到 heroku
- java - 如何从 FusedLocationProviderClient 中的 addOnSuccessListener 中提取坐标
- scala - 如何转换成精炼型?
- python - Python tkinter Checkbutton 防止切换
- javascript - 删除与 RegEx 匹配的部分字符串