用于自定义JSON的Serde类(Kotlin和Kafka)

用于自定义JSON的Serde类(Kotlin和Kafka),kotlin,serialization,apache-kafka-streams,Kotlin,Serialization,Apache Kafka Streams,我正在Kotlin中编写kafka流应用程序,它使用JSON消息(没有AVRO或模式注册表) 在MyMessage.kt中,我已将MyMessage类声明为@Serializable MyMessage.kt import kotlinx.serialization.Serializable @Serializable data class MyMessage(val from: String, val to: String, val msg: String) val s: KString&

我正在Kotlin中编写kafka流应用程序,它使用JSON消息(没有AVRO或模式注册表)

在MyMessage.kt中,我已将
MyMessage
类声明为
@Serializable

MyMessage.kt

import kotlinx.serialization.Serializable

@Serializable
data class MyMessage(val from: String, val to: String, val msg: String)
val s: KString<String, MyMessage> = streamsBuilder()
    .stream("my", Consumed.with(Serdes.String, Serdes.serdeFrom(MyMessage::class.java)
流媒体.kt

import kotlinx.serialization.Serializable

@Serializable
data class MyMessage(val from: String, val to: String, val msg: String)
val s: KString<String, MyMessage> = streamsBuilder()
    .stream("my", Consumed.with(Serdes.String, Serdes.serdeFrom(MyMessage::class.java)

我缺少什么?

Serdes.serdesFrom()的参数需要一个
序列化器和
反序列化器
对象(这两个接口都是来自package
org.apache.Kafka.common.serialization的Kafka接口,与
@Serializable
注释无关

您需要创建类
MyMessageSerializer extends Serializer
MyMessageDeserializer extends Deserializer
,并将这些对象传递到方法中。 要使用这两个类实现实际的序列化/反序列化,如果需要,可以依赖默认的序列化/反序列化