在
KafkaProperties
提供的spring-kafka
中,生产者和消费者的反/序列化器是String{Des/S}serializer
。
但是,使用
spring-cloud-stream-binder-kafka
时,会被ByteArray{Des/S}erializer
更改为KafkaBinderEnvironmentPostProcessor
。有理由将此作为默认值吗?或者是否有理由进行不同的设置?
字节数组(反)序列化器在与 JSON 相互转换时效率更高(Spring Cloud Stream 通常就是这种情况;它避免了之前/之后从
byte[]
到 String
的不必要转换(反之亦然) JSON 转换。
Boot 选择了 String,因为它提供了更简单的“入门”体验。
典型应用程序(SCSt 除外)将使用更复杂的实现(JSON、Avro 等)。