多个KafkaListener /一个主题

时间:2020-01-24 17:35:34

标签: kafka-consumer-api spring-kafka

我正在使用spring-kafka 2.2.12,我才刚开始。

我想通过kafka管理业务实体的创建/更新。如果可能,在同一主题中,以保证订单(通过提供业务密钥)。由于这不是相同的java类型(创建和请求),我想我需要有2个KafkaListener(带有自己的ContainerFactory / JsonDeserializer)。也许我错了?

所以我的问题是:是否有可能使用不同的KafkaListener(由于反序列化)而消耗相同的主题(以保持消息顺序)?

也许我没有以正确的方式接近主题...我没有设法在一个KafkaListener中使用不同的对象类型。

谢谢。

1 个答案:

答案 0 :(得分:0)

如果生产者也是Spring,并且使用JsonSerializer;它将在标头中添加类型信息(默认情况下),JsonDeserializer使用该信息来创建目标对象。

如果类型不同(源和目标),但是从JSON角度来看类型兼容,则可以将类型映射信息添加到反序列化器中。

如果源不是Spring,也可以使用类型映射(但可以修改以设置类型信息标头)。

请参见the documentation

您还可以使用Delegating serializer/deserializer根据某些标头调用不同的实现。