스프링 카프카
- 스프링 프레임워크에서 카프카를 추상화하여 효과적으로 사용할 수 있게 만든 라이브러리
- 카프카 클라이언트에서 활용하는 여러 가지 패턴을 미리 제공함.
스프링 카프카 프로듀서
- 스프링 카프카 프로듀서는
카프카 템플릿 (Kafka Template)
이라는 클래스를 사용 - 카프카 템플릿은
프로듀서 팩토리 (Producer Factory)
클래스를 통해 생성
방법
- 스프링 카프카의 기본 제공 템플릿
- application.yml 파일에 옵션을 지정하고 사용
- 사용자가 직접 카프카 템플릿을 프로듀서 팩토리로 생성
- 프로듀서 팩토리를 통해 만든 카프카 템플릿을 스프링 빈으로 등록 후 사용
- 프로듀서에 필요한 각종 옵션을 선언 후 사용 가능
- 스프링 카프카 애플리케이션 내부에 다양한 프로듀서 인스턴스를 생성하고 싶다면 사용
- A 클러스터로 전송하는 카프카 프로듀서
- B 클러스터로 전송하는 카프카 프로듀서
- 이 두개의 프로듀서를 동시에 사용시 입맛에 맞게 Bean 등록 후 사용해라
스프링 카프카 컨슈머
- 스프링 카프카 컨슈머는 기존 컨슈머를 크게 2가지 타입으로 나누고 커밋을 7개로 나누었다.
타입
- 레코드 리스너 (Message Listener)
- 단 1개의 레코드만 처리
- 배치 리스터 (Batch Message Listener)
- 한 번에 여러 개 레코드들 처리
방법
- 기존 카프카 클라이언트 라이브러리를 가지고 컨슈머를 구현할 때 번거로운 부분 -> 커밋 구현
- 카프카 컨슈머에서 구현할 경우는 오토, 동기, 비동기 커밋 나뉨
- 실제 운영한경에서는 이 외에도 다양함.
- 예시
- 특정 타이밍마다 커밋
- 레코드 개수에 따라 커밋
- 이러한 규칙 적용 시 로직을 계속적으로 추가 작성해야함.
- 스프링 카프카는 통용되는 커밋의 종류를 7가지로 세분화
- RECORD, BATCH, TIME, COUNT, COUNT_TIME, MANUAL, MANUAL_IMMEDIATE)
- 스프링이 미리 로직 생성해 놓음..
- 스프링 카프카에서 커밋은 커밋이 아니라
AckMode
- 기본 값은 BATCH
- 컨슈머의 enable.auto.commit = false
리스너 생성 방식
- 기본 리스너 컨테이너 사용
- 컨테이너 팩토리를 사용하여 직접 Bean 등록 후 사용
반응형
'📨 Apache Kafka' 카테고리의 다른 글
[아파치 카프카 애플리케이션 프로그래밍 with 자바] 4-3장 카프카 컨슈머 (0) | 2023.05.18 |
---|---|
[아파치 카프카 애플리케이션 프로그래밍 with 자바] 4-2장 카프카 프로듀서 (0) | 2023.05.07 |
[아파치 카프카 애플리케이션 프로그래밍 with 자바] 4-1장 토픽과 파티션 (0) | 2023.05.05 |
[아파치 카프카 애플리케이션 프로그래밍 with 자바] 3-6장 카프카 커넥트 (0) | 2023.04.20 |
[아파치 카프카 애플리케이션 프로그래밍 with 자바] 3-5장 카프카 스트림즈 (0) | 2023.04.13 |