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(...);
}
콘솔 소비자를 사용하는 소비자가 있습니다. 첫 번째 접근 방식에서는 데이터가 도착하는 데 몇 초가 걸리지 만 두 번째 접근 방식에서는 필터링 된 데이터를 즉시 가져옵니다!
차이점이 무엇인지 설명해 주시겠습니까?첫 번째 접근 방식에서 메시지가 소비자에게 도착하는 데 몇 초가 걸리는 이유는 무엇입니까?가장 좋은 방법은 무엇입니까?
감사!