I use spring-boot (2.2.4), spring-kafka (2.3.5), Gradle and Kotlin. I want to use headers for mapping types, but I don't understand how do it...
I see to spring-kafka reference and write next code:
My config:
@Configuration
class KafkaProducerConfig {
fun defaultConfig(): HashMap<String, Any> {
var config = HashMap<String, Any>()
config[ProducerConfig.BOOTSTRAP_SERVERS_CONFIG] = "localhost:9092"
config[ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG] = IntegerSerializer::class.java
config[ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG] = JsonSerializer::class.java
config[JsonSerializer.TYPE_MAPPINGS] = "order:${Order::class.java}, client:${Client::class.java}"
return config
}
@Bean
fun orderTemplate(): KafkaTemplate<Int, Order> {
val factory = DefaultKafkaProducerFactory<Int, Order>(defaultConfig(),
IntegerSerializer(),
JsonSerializer<Order>())
return KafkaTemplate(factory)
}
}
I send data:
@Service
class ProducerService(@Autowired val orderSender: KafkaTemplate<Int, Order> {
@Scheduled(fixedDelay = 2000)
fun send() {
orderSender.send("order.t", 1, Order())
}
I get the following error:
Magic v1 does not support record headers
Please help me.