1

I set kafka consumer deserializers in application.yml like this:

application.yml

kafka:
  consumer:
    key-deserializer: org.springframework.kafka.support.serializer.ErrorHandlingDeserializer
    value-deserializer: org.springframework.kafka.support.serializer.ErrorHandlingDeserializer
    properties.spring:
      json.trusted.packages: '*'
      deserializer.key.delegate.class: org.apache.kafka.common.serialization.StringDeserializer
      deserializer.value.delegate.class: org.springframework.kafka.support.serializer.JsonDeserializer

But I want to set them in a java configuration file like this:

KafkaConfig.java

public class KafkaConfig {
    @Bean
    public KafkaConsumer kafkaConsumer() {
        Properties properties = new Properties();
        properties.setProperty(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, ErrorHandlingDeserializer.class.getName());
        properties.setProperty(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, ErrorHandlingDeserializer.class.getName());
        // set delegate deserializer class here
        KafkaConsumer kafkaConsumer = new KafkaConsumer(properties);
        return kafkaConsumer;
    }
}

I can have a deserializer by using ConsumerConfig.class, but I don't know how to set a delegate deserializer class without using magic values.

JerrryUL
  • 11
  • 1

0 Answers0