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.