Spring Kafka потребляет объекты JsonNode

У меня есть служба, которая создает сообщения Kafka с полезной нагрузкой типа com.fasterxml.jackson.databind.JsonNode. Когда я использую это сообщение, я хочу, чтобы оно было сериализовано в 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 должен создавать сообщение без заголовка __Key_TypeId__, если оно является подклассом JsonNode

Но как реализовать любой из этих подходов? Или есть другой вариант?

Почему ваш продюсер не может отправить com.example.Person вместо низкоуровневого JsonNode? Он будет правильно сериализован в JSON, и этот тип будет диктовать потребителю, что делать с byte[] в сетевом пакете.

Artem Bilan 08.07.2019 20:58
Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Apache Kafka - популярная платформа распределенной потоковой передачи данных, которую можно использовать для построения конвейеров данных в реальном...
0
1
694
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

См. справочное руководство.

Вы можете установить JsonSerializer.ADD_TYPE_INFO_HEADERS на false для производителя или JsonDeserializer.USE_TYPE_INFO_HEADERS на false для потребителя.

Другие вопросы по теме