我正在使用spring-kafka 2.2.12,我才刚开始。
我想通过kafka管理业务实体的创建/更新。如果可能,在同一主题中,以保证订单(通过提供业务密钥)。由于这不是相同的java类型(创建和请求),我想我需要有2个KafkaListener(带有自己的ContainerFactory / JsonDeserializer)。也许我错了?
所以我的问题是:是否有可能使用不同的KafkaListener(由于反序列化)而消耗相同的主题(以保持消息顺序)?
也许我没有以正确的方式接近主题...我没有设法在一个KafkaListener中使用不同的对象类型。
谢谢。
答案 0 :(得分:0)
如果生产者也是Spring,并且使用JsonSerializer
;它将在标头中添加类型信息(默认情况下),JsonDeserializer
使用该信息来创建目标对象。
如果类型不同(源和目标),但是从JSON角度来看类型兼容,则可以将类型映射信息添加到反序列化器中。
如果源不是Spring,也可以使用类型映射(但可以修改以设置类型信息标头)。
您还可以使用Delegating
serializer/deserializer根据某些标头调用不同的实现。