你不能那样做;您有2个不同的侦听器容器,其中的侦听器期望使用不同的对象。
对于接收不同类型的多个侦听器方法,您需要
@KafkaListener在类级别和
@KafkaHandler方法级别使用。
请参见有关类的@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) { ... }}默认方法是可选的,用于未知的有效负载类型。
但这仅适用于智能解串器(知道如何转换为不同的有效负载)。
或者,可以将a添加
RecordFilterStrategy到侦听器容器工厂中,以跳过每个侦听器中的其他记录。



