Spring Kafka 消费 JsonNode objects

Spring Kafka Consume JsonNode objects

我有一项服务正在生成负载类型为 com.fasterxml.jackson.databind.JsonNode 的 Kafka 消息。当我使用此消息时,我希望将其序列化为 POJO,但我收到以下消息:

IllegalArgumentException: Incorrect type specified for header 'kafka_receivedMessageKey'. Expected [class com.example.Person] but actual type is [class com.fasterxml.jackson.databind.node.ObjectNode]

如何配置生产者或消费者部分以按我的预期工作?

我认为这些是我可以采取的方法:

Kafka Consumer 应该忽略 __Key_TypeId__ 如果它是 JsonNode

的子类

如果 Kafka Producer 是 JsonNode

的子类,它应该生成一条没有 __Key_TypeId__ header 的消息

但是我该如何实施这两种方法?或者还有其他选择吗?

参见reference manual

您可以在生产者上将 JsonSerializer.ADD_TYPE_INFO_HEADERS 设置为 false,或者在消费者上将 JsonDeserializer.USE_TYPE_INFO_HEADERS 设置为 false。