1 回答

TA贡献1946条经验 获得超4个赞
你不能那样做;您有 2 个不同的侦听器容器,其中的侦听器期望不同的对象。
对于接收不同类型的多个监听器方法,需要@KafkaListener在类级别和@KafkaHandler方法级别使用。
请参阅Class 上的@KafkaListener。
在类级别使用@KafkaListener 时,您在方法级别指定@KafkaHandler。传递消息时,转换后的消息负载类型用于确定调用哪个方法。
@KafkaListener(id = "multi", topics = "myTopic")
static class MultiListenerBean {
@KafkaHandler
public void listen(String foo) {
...
}
@KafkaHandler
public void listen(Integer bar) {
...
}
@KafkaHandler(isDefault = true`)
public void listenDefault(Object object) {
...
}
}
默认方法是可选的,用于未知的有效负载类型。
但这仅适用于智能反序列化器(知道如何转换为不同的有效负载)。
或者,您可以RecordFilterStrategy向侦听器容器工厂添加一个以跳过每个侦听器中的其他记录。
添加回答
举报