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向偵聽器容器工廠添加一個以跳過每個偵聽器中的其他記錄。
添加回答
舉報