2016-10-07 83 views
0

我有一個生產者(Source)寫消息到卡夫卡輸出通道,該生產者發送不同類型的對象。在消費者方面(Sink)我想在同一個輸入通道上有多個@Streamlistener方法,每種方法具有不同的參數類型,目前它不工作我得到Duplicate @StreamListener mapping for 'input'春天的雲流kafka:重複@StreamListener映射的'輸入'

這裏是我的消費者代碼:

@StreamListener(Sink.INPUT) 
public void on(PostUpvotedEvent event) { 

} 

@StreamListener(Sink.INPUT) 
public void on(PostDownvotedEvent event) { 

} 

有沒有更好的解決辦法做到這一點比具有單一@StreamListener方法,這將考驗消息類型來選擇要調用哪個方法?

回答

0

多個@StreamListener方法現在不支持相同的綁定元素。在您的情況下,支持這種方式可以在入站通道上註冊多個用戶。

請創建一個功能請求here

+0

可以有這個原因當前不允許一些真正原因。我不確定。目前,基於StreamListener的'message handler'使用'map',其中包含每個可綁定元素的消息處理方法。在你的'輸入'綁定名稱的情況下,將會在該'map'中註冊單一處理程序方法。目前,「地圖」僅在上下文創建之前使用。讓我們看看我們如何從這裏採取這一點。 –