簡體   English   中英

Spring Kafka Streams - 創建 Stream 與注入現有 Stream bean

[英]Spring Kafka Streams - Create Stream vs Inject an existing Stream bean

我正在使用 Kafka Streams 創建一個基於 Spring 的服務,當我使用現有的 @Bean KStream VS 為該流創建一個流時,我注意到一個很大的耗時差異。

假設我有以下代碼:

@Autowired
private StreamsBuilder eventsStreamsBuilder;

@Bean("eventsKStream")
public KStream<String, String> eventsKStream() {

   KStream<String, String> stream = eventsStreamsBuilder.stream(...);
   stream.to("NEW_TOPIC");
   return stream;
}

// 1. First approach, create a stream for the "NEW_TOPIC" and filter it
@Bean("eventsFilterKStream")
public KStream<String, String> eventsFilterKStream() {
   return eventsStreamsBuilder.stream("NEW_TOPIC",....)
   .filter()
}

// 2. Second approach, inject the existing Stream Bean and filter it
@Bean("eventsFilterKStream")
public KStream<String, String> eventsFilterKStream(@Qualifier("eventsKStream") KStream<String, String> eventsKStream) {
   return eventsKStream.filter(...);
}

我有一個消費者,使用控制台消費者......並注意到對於第一種方法,數據到達需要幾秒鍾,但在第二種方法中,我立即獲得過濾后的數據!

你能解釋一下有什么區別嗎? 為什么第一種方法需要幾秒鍾才能將消息發送給消費者? 什么是最好的方法?

謝謝!

方法 #2 更快,因為它向現有的KStream添加了一個過濾器處理器節點,而不是在方法 #1 中創建一個從源主題讀取的全新KStream

這取決於您的拓撲結構,但我會從 #2 開始,除非您有充分的理由不這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM