我想知道我们在Kafka主题中可以拥有哪些类型的数据。 据我所知,在应用程序级别,这是键值对,这可能是语言支持的类型数据。 例如,我们向主题发送一些消息,可能是一些json,镶木地板文件,序列化数据,或者我们只使用纯文本格式来处理消息?
谢谢你的帮助。
答案 0 :(得分:3)
根据您是在谈论API,有线协议还是磁盘存储,有各种消息格式。
这些文档中描述了一些Kafka Message格式
https://kafka.apache.org/documentation/#messageformat
Kafka具有串行器/解串器或SerDes(发音为Sir-Deez)的概念。
https://en.m.wikipedia.org/wiki/SerDes
Serializer是一个可以接收任何消息并将其转换为实际使用Kafka协议在线路上发送的字节数组的函数。
反序列化器执行相反的操作,它读取Kafka有线协议的原始消息字节部分,并重新创建一条消息,因为您希望接收应用程序看到它。
针对JSON,ProtoBuf,Avro以及特定于应用程序的消息格式,有针对Strings,Long,ByteArrays,ByteBuffers和大量社区SerDes库的内置SerDes库。
您可以构建自己的SerDes库以及以下
答案 1 :(得分:2)
关于这个话题,它总是只是序列化的数据。在获取之后,在消费者中发送和反序列化之前,生成器中会发生序列化。序列化程序和反序列化程序是可插入的,因此正如您在应用程序级别所说的那样,它是您想要的任何数据类型的键值对。