인프라/Kafaka

카프카 리스너 종류 2-배치 메시지 리스너

물에서육지로 2024. 12. 6. 14:20

https://foulerback.tistory.com/27

 

카프카 리스너 종류 1- 단일 메시지 리스너

카프카의 리스너 종류에 대해 이전에 알아봤다.https://foulerback.tistory.com/26 Kafka 리스너(Listener) 개념과 종류Kafka Listener는 Apache Kafka로부터 데이터를 소비하는 역할을 수행하는 Spring Kafka의 기능입

foulerback.tistory.com

 

지난번에는 단일 메시지 리스너에 대해 알아봤고, 이번에는 단일 메세지 리스너와 배치 리스너의 차이점과

배치 리스너가 뭔지 알아보려고 한다.

 

배치 리스너:

  • 한 번에 여러 메시지(배치)를 묶어서 처리합니다.
  • Kafka에서 여러 메시지를 가져온 뒤, 배치 단위로 리스너 메서드가 호출됩니다.

뭐 한글은 읽을 수 있으니까 내용은 알겠다.

한번에 메세지를 보내겠다는 말인데, 이게 무슨 말인지 이해가 안갔다.

인강을 봐도 이해가 잘 안가서 왜 안갔나 봤더니 예시가 좀 와닿지 않았다.

그래서 gpt 형님에게 물어보니까 예제가 아주 심플하게 나와서 그걸로 이해가 됐다.

예제 샘플을 gpt형님이 알려준 예제를 보여 주겠다.

 

1. 컨트롤러 단에서 호출할 메소드 만들어 준다.

 

batchMessage 를 호출할 수 있도록 메소드 하나 생성해준다.

 

2. Producer에서 메세지 보내기 만들어 준다.

배치프로듀서도 메세지를 20개 보내보겠다.

 

3. Consumer에서 메세지 받는다.

컨슈머도 동일하게 메세지를 읽어오도록 해준다.

하나 단일메세지와 다르게 추가 된 것은 containerFactory 정보를 입력해준다.

배치용으로 만든 factory를 읽기 위해 작성해 준다.

 

4.카프카 설정

 

컨슈머의 설정값을 변경하여 하나 만들어 준다.

아까 단일 메시지 리스너와 중복 될 수 있으니 bean 객체 이름을 다르게 해서 만들어 준다.

사실 단일 메시지 리스너에서도 말했지만 저 setBatchListener(true)만 추가해주면 배치 리스너로 동작한다.

차이점을 보려고 새로 만들었다.

 

5.결과

포스트맨으로 배치 리스너를 호출해준다.

 

 

그러면 이번에는 캡쳐뜨기 쉽게 결과가 나온다.

메세지 20개를 보냈고, 한번에 받는다

20개를 한번에 받는것을 확인할 수 있다.

메시지 처리 여러 메시지를 한 번에 처리
메서드 호출 여러 메시지를 포함한 리스트가 메서드에 전달됨
성능 대량의 메시지를 효율적으로 처리 가능
설정 setBatchListener(true)를 설정해야 함