Spring Kafka использует объекты JsonNode

У меня есть служба, которая создает сообщения Kafka с полезной нагрузкой типа com.fasterxml.jackson.databind.JsonNode. Когда я использую это сообщение, я хочу, чтобы оно было сериализовано в POJO, но я получаю следующее сообщение:

IllegalArgumentException: для заголовка «kafka_receivedMessageKey» указан неправильный тип. Ожидается [класс com.example.Person], но фактический тип - [класс com.fasterxml.jackson.databind.node.ObjectNode]

Как мне настроить как производитель, так и потребительские части, чтобы они работали так, как я предполагаю?

Думаю, я могу использовать следующие подходы:

Kafka Consumer должен игнорировать __Key_TypeId__, если он является подклассом JsonNode

ИЛИ

Kafka Producer должен создавать сообщение без заголовка __Key_TypeId__, если оно является подклассом JsonNode.

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


person George    schedule 08.07.2019    source источник
comment
Почему ваш продюсер не может послать com.example.Person вместо JsonNode низкого уровня? Он будет правильно сериализован в JSON, и этот тип будет указывать потребителю, что ему делать с byte[] в сетевом пакете.   -  person Artem Bilan    schedule 08.07.2019


Ответы (1)


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

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

person Gary Russell    schedule 08.07.2019