假设我们将DEFAULT_VALUE_SERDE_CLASS_CONFIG设置为Serdes.ByteArraySerde,并假设没有在拓扑中指定进一步的覆盖并且使用了默认覆盖,它将为正在创建的每个消息创建一个byte []数组类型的新对象。从主题反序列化?另外,从状态存储中检索此行为是否适用,这意味着它会创建byte []数组类型的新对象吗?
还是会重用与每个流线程相对应的相同对象?
答案 0 :(得分:0)
当需要持久存储对象或从状态存储中读取对象时,Kafka流使用Serdes对对象进行序列化/反序列化。要在kafka-stream流中使用此类对象,通常需要定义一个DTO,可能会有不同的DTO,并且通常情况下默认情况下是一个,如果没有另外指定,则使用默认DTO。有多种技术可以实现这一点,它有其优点和缺点,可以满足您需求的一种方法是例如使用ObjectMapper。除非您要在字节级别而不是在类中定义为dto的对象级别工作,否则使用Serdes.ByteArraySerde似乎不是很有用。