인프라/Kafaka

[실습] Kafka 배치 메세지 리스너 pub/sub 단순 구현

물에서육지로 2024. 12. 11. 10:27

배치 메세지 리스너 구현 실습 내용이다.

배치 메세지 리스너를 구현하고 한번에 메세지가 처리된다고 했는데 왜 컨슈머에서 메세지가 쪼개지지? 하고 의문이 들었었다.

 

Kafka에서 배치 리스너를 사용하는 경우에도, Kafka의 기본 동작인 파티셔닝은 여전히 적용됩니다. 배치 리스너가 메시지를 처리할 때, 여러 파티션에서 가져온 메시지를 한 번에 전달받을 수 있습니다. 

 

위와 같이 배치 리스너라고 해도 파티셔닝 기본 동작은 유지한 채로 읽어온다고 한다.

결국 전체 메세지를 컨슈머에서 다 소비하긴 한다.

 

 

1. @RestController 생성

    MyController에서 앞으로 url 호출 예정 (post: /message/b 호출)

 

얘는 메세지만 한번에 받는 것 테스트 하느라 호출만 하면 처리 된다.

 

2. Producer 설정

메세지만 5개 호출 보낸 것을 확인할 수 있다.

 

3.Consumer

 

4.config

 

Producer 설정이야 그냥 스트링 보내고 스트링으로 받는다는 설정으로 다를게 없다.

컨슈머에서 factory.setBatchListener(true) 값이 추가 되었다.

저 값을 true로 주면 데이터가 한번에 처리 된다. 

 

5. 결과

위의 결과 값을 배치 리스너 true인 값이고, 아래는 배치 리스너 false의 값이다.

단일 메세지는 한건씩 받아서 처리하는 걸 볼 수 있고, 배치 리스너는 한번에 받아서 처리하는 것을 볼 수 있다.