Я использую Spring boot с Kafka в моем проекте.Я хочу изменить JSON на объект.В моем примере с Java это прекрасно работает:
public ConsumerFactory<String, EmailSent> userConsumerFactory(){
Map<String, Object> config = new HashMap<>();
config.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "127.0.0.1:9092");
config.put(ConsumerConfig.GROUP_ID_CONFIG, "group_json");
config.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
config.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, JsonDeserializer.class);
return new DefaultKafkaConsumerFactory<String, User>(config, new StringDeserializer(), new JsonDeserializer<>(EmailSent.class));
}
Когда я пытаюсь сделать similair в Kotlin, я получаю красную линию в JsonDeserializer <> (EmailSent :: class)).Мой код котлина:
@Bean
fun userConsumerConfigs(): Map<String, Any> {
val props = HashMap<String, Any>()
props[ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG] = "$host:$port"
props[ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG] = StringDeserializer::class.java
props[ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG] = JsonDeserializer::class.java
props[ConsumerConfig.GROUP_ID_CONFIG] = "helloworld"
return props
}
@Bean
fun userConsumerFactory(): ConsumerFactory<String, EmailSent> {
return DefaultKafkaConsumerFactory(userConsumerConfigs(), StringDeserializer(), JsonDeserializer<>(EmailSent::class))
}
Есть идеи, что я делаю не так?