들어가기 전 Kafka Streams에는 repartition() 메서드가 존재한다. 이 메서드가 어떤 역할을 하는지 확인하고자 한다. Kafka Streams의 Repartition의 의미 KStream repartition(); KStream repartition(final Repartitioned repartitioned); 카프카 스트림즈에는 repartition() 메서드가 존재하고, 이 메서드는 2가지 형태로 사용할 수 있다. 하나는 매개변수를 전달하지 않은 것이고, 하나는 매개변수를 전달해서 하는 것이다. 결론부터 정리하면 다음과 같다. repartition() : 이전 스트림과 동일한 형태로 리파티션한다. ChangeLog 토픽을 생성하고 새롭게 리파티셔닝 함. 이 때, 동일한 파티션 갯수..
들어가기 전 이 책은 Kafka Stremas in Action의 부록A~B를 공부하며 작성한 글입니다. 시작 시 리밸런싱 수 제한하기 (group.initial.rebalance.delay.ms) 카프카 스트림즈가 처음 기동될 때 카프카 스트림즈는 Consumer와 동일한 형태로 동작한다. 다음 동작으로 정리할 수 있다. 첫번째로 기동되는 카프카 스트림즈는 브로커의 Group Coordinator에서 모든 TopicPartition을 가져온다. 그리고 본인은 컨슈머 리더가 된다. 두번째로 기동되는 카프카 스트림즈는 브로커의 Group Coordinator에게 자신이 들어온 것을 알린다. 그리고 리밸런싱이 발생한다. 세번째로 기동되는 카프카 스트림즈는 브로커의 Group Coordinator에게 자신이 ..
들어가기 전 이 글은 Kafka Streams in action 8장을 보고 공부하며 작성한 글입니다. 기존 책의 코드가 오래된 코드라 변경하면서 교재와는 다른 코드일 수 있습니다. 8. 카프카 스트림즈 어플리케이션 테스트 테스트 유형 목적 테스트 속도 사용 수준 단위 격리된 부분 기능에 대한 개별 테스트 빠름 대다수 통합 전체 시스템 사이의 통합 지점 테스트 실행 시간이 더 길어짐 극소수 테스트에는 단위 / 통합 테스트가 있다. 이번 장에서는 Kafka Streams에서 사용할 수 있도록 단위 / 통합 테스트를 구축하는 방법을 알아보고자 한다. 또한 Kafka Streams의 리밸런싱 등을 테스트 하기 위해서는 Kafka Streams 클러스터가 필요하다. 그렇지만 외부 클러스터 설정에 의존하고 싶지 ..
들어가기 전 Kafka Streams 자체는 데이터를 필터링 해주는 녀석이다. 만약 이 녀석을 웹서버와 함께 사용하고자 한다면, Spring 사용을 고려해 볼 수 있다. 이번 포스팅에서는 Spring과 Kafka Streams를 어떻게 함께 사용할 수 있는지에 대해 살펴보고자 한다. Kafka Streams를 Spring에서 사용하는 방법 @EnableKafkaStreams를 사용하는 방법 Kafka Streams를 스프링 빈으로 직접 등록 위 두 가지 방법을 이용해서 Spring에서 KafkaStreams를 사용할 수 있다. Spring 웹 서버는 HTTP 요청이 들어오면 Request Scope의 빈을 생성한다. 즉, 요청마다 빈이 생성되는 것이기 때문에 KafkaStreams를 HTTP에서 사용하면..
들어가기 전 이 글은 Kafka Streams In Action의 챕터9를 보고 공부한 글입니다. 9.1 카프카와 다른 데이터 소스 통합 이 부분은 Kafka Connector를 공부하고 직접 해보려고 합니다. 9.2 데이터베이스 제약 걷어내기 (대화식 쿼리 이용) 카프카 스트림즈의 결과는 콘솔에서 결과를 검토하거나 Sink 토픽에서 그 메세지를 읽으면서 확인할 수 있었다. 그런데 이렇게 될 경우에는 내부적으로 사용하고 있는 StateStore에 대한 값은 확인을 할 수 없다는 단점이 있다. 이런 StateStore의 상태를 보려면, Process 과정에서 StateStore의 데이터를 DB에 밀어넣고 DB에서 확인을 해야한다. 이렇다면 구조는 복잡해지고, 트랜잭션 과정에서 성능이 저하될 수 있다는 단점..