본문 바로가기
📨 Apache Kafka

[아파치 카프카 애플리케이션 프로그래밍 with 자바] 4-4장 스프링 카프카

by GroovyArea 2023. 6. 6.

스프링 카프카

  • 스프링 프레임워크에서 카프카를 추상화하여 효과적으로 사용할 수 있게 만든 라이브러리
  • 카프카 클라이언트에서 활용하는 여러 가지 패턴을 미리 제공함.

 

스프링 카프카 프로듀서

  • 스프링 카프카 프로듀서는 카프카 템플릿 (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 등록 후 사용
반응형