用于自定义JSON的Serde类(Kotlin和Kafka)
我正在Kotlin中编写kafka流应用程序,它使用JSON消息(没有AVRO或模式注册表) 在MyMessage.kt中,我已将用于自定义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&
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()的参数需要一个
序列化器和反序列化器
对象(这两个接口都是来自packageorg.apache.Kafka.common.serialization的Kafka接口,与@Serializable
注释无关
您需要创建类MyMessageSerializer extends Serializer
和MyMessageDeserializer extends Deserializer
,并将这些对象传递到方法中。
要使用这两个类实现实际的序列化/反序列化,如果需要,可以依赖默认的序列化/反序列化