Spring kafka Magic v1不支持记录头?

Spring kafka Magic v1不支持记录头?,spring-kafka,Spring Kafka,我使用弹簧靴(2.2.4)、弹簧卡夫卡(2.3.5)、格拉德尔和科特林。 我想用头来映射类型,但我不明白怎么做 我负责编写下一个代码: 我的配置: @Configuration class KafkaProducerConfig { fun defaultConfig(): HashMap<String, Any> { var config = HashMap<String, Any>() config[ProducerConfig.BOOTSTRAP_

我使用弹簧靴(2.2.4)、弹簧卡夫卡(2.3.5)、格拉德尔和科特林。 我想用头来映射类型,但我不明白怎么做

我负责编写下一个代码:

我的配置:

@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)
}
}
@配置
类KafkaProducerConfig{
fun defaultConfig():HashMap{
var config=HashMap()
config[ProducerConfig.BOOTSTRAP\u SERVERS\u config]=“本地主机:9092”
config[ProducerConfig.KEY\u SERIALIZER\u CLASS\u config]=IntegerSerializer::CLASS.java
config[ProducerConfig.VALUE\u SERIALIZER\u CLASS\u config]=JsonSerializer::CLASS.java
config[JsonSerializer.TYPE_MAPPINGS]=“顺序:${order::class.java},客户端:${client::class.java}”
返回配置
}
@豆子
fun orderTemplate():KafkaTemplate{
val factory=DefaultKafkaProducerFactory(defaultConfig(),
IntegerSerializer(),
JsonSerializer())
返回卡夫卡模板(工厂)
}
}
我发送数据:

@Service
class ProducerService(@Autowired val orderSender: KafkaTemplate<Int, Order> { 

@Scheduled(fixedDelay = 2000)
fun send() {
    orderSender.send("order.t", 1, Order())
}
@服务
类ProducerService(@Autowired val orderssender:KafkaTemplate{
@计划(固定延迟=2000)
乐趣发送(){
orderssender.send(“order.t”,1,order())
}
我得到以下错误:

Magic v1不支持记录头


请帮帮我。

这意味着您的Kafka代理太老(<0.11.0.0),无法支持头文件

JSON序列化程序(默认情况下)向记录头添加类型信息,以便接收系统对如何反序列化有一些提示

如果您必须使用这样一个旧的代理,您可以使用

/**
 * Set to false to disable adding type info headers.
 * @param addTypeInfo true to add headers.
 * @since 2.1
 */
public void setAddTypeInfo(boolean addTypeInfo) {
    this.addTypeInfo = addTypeInfo;
}
在序列化程序上