배치 메세지 리스너 구현 실습 내용이다.
배치 메세지 리스너를 구현하고 한번에 메세지가 처리된다고 했는데 왜 컨슈머에서 메세지가 쪼개지지? 하고 의문이 들었었다.
Kafka에서 배치 리스너를 사용하는 경우에도, Kafka의 기본 동작인 파티셔닝은 여전히 적용됩니다. 배치 리스너가 메시지를 처리할 때, 여러 파티션에서 가져온 메시지를 한 번에 전달받을 수 있습니다.
위와 같이 배치 리스너라고 해도 파티셔닝 기본 동작은 유지한 채로 읽어온다고 한다.
결국 전체 메세지를 컨슈머에서 다 소비하긴 한다.
1. @RestController 생성
MyController에서 앞으로 url 호출 예정 (post: /message/b 호출)
얘는 메세지만 한번에 받는 것 테스트 하느라 호출만 하면 처리 된다.
2. Producer 설정
메세지만 5개 호출 보낸 것을 확인할 수 있다.
3.Consumer
4.config
Producer 설정이야 그냥 스트링 보내고 스트링으로 받는다는 설정으로 다를게 없다.
컨슈머에서 factory.setBatchListener(true) 값이 추가 되었다.
저 값을 true로 주면 데이터가 한번에 처리 된다.
5. 결과
위의 결과 값을 배치 리스너 true인 값이고, 아래는 배치 리스너 false의 값이다.
단일 메세지는 한건씩 받아서 처리하는 걸 볼 수 있고, 배치 리스너는 한번에 받아서 처리하는 것을 볼 수 있다.
'인프라 > Kafaka' 카테고리의 다른 글
[실습] Kafka 수동 커밋 구현(리밸런싱) (1) | 2024.12.12 |
---|---|
[실습] Kafka 객체를 JSON 문자열로 직렬화 구현 (2) | 2024.12.11 |
[실습] Kafka 단일 메세지 리스너 pub/sub 단순 구현 (2) | 2024.12.10 |
kafka의 EOS란 무엇인가 (1) | 2024.12.10 |
Kafka 중복 컨슘이 발생하는 이유 (rebalance) (1) | 2024.12.09 |