Как программно установить метод JsonDeserializer TypeValue в Spring Kafka - PullRequest
3 голосов
/ 06 августа 2020

Итак, мне не удалось настроить метод JavaType для JsonSerializer, используя только yaml. Пока не знаю, в чем причина, но как мне установить это программно?

Я видел код для этого в документации, но где именно этот код должен запускаться?

Spring Kafka: JsonDeserializer не принимает конфигурацию TRUSTED_PACKAGE

Это то, что я пробовал до сих пор. Kafka Spring Deserialzer returnType stati c метод никогда не вызывается

PS Я использую Spring Boot 2.1.8, поэтому сейчас не могу легко использовать новый способ с только свойствами.

1 Ответ

1 голос
/ 06 августа 2020

Чтобы получить эту функциональность со старой версией Boot, вам необходимо скопировать код из 2.5 JsonDeserializer в настраиваемый десериализатор - typeFunction был добавлен в 2.5.

При создании десериализатора программно вы должны добавить его непосредственно в фабрику потребителей. См. документацию .

Для более сложных или частных случаев KafkaConsumer (и, следовательно, KafkaProducer) предоставляет перегруженные конструкторы для приема экземпляров Serializer и Deserializer для ключей и значений соответственно .

Когда вы используете этот API, DefaultKafkaProducerFactory и DefaultKafkaConsumerFactory также предоставляют свойства (через конструкторы или методы установки) для внедрения пользовательских экземпляров сериализатора и десериализатора в целевой источник или получатель. Кроме того, вы можете передавать экземпляры Supplier или Supplier через конструкторы - эти Supplier вызываются при создании каждого Producer или Consumer.

Создать DefaultKafkaConsumerFactory @Bean (переопределяя загрузку по умолчанию).

...