2024 12 13
2024-12-13¶
RabbitMQ prefetch¶
참고: https://velog.io/@sdb016/RabbitMQ-Prefetch%EC%99%80-%EC%84%B1%EB%8A%A5
참고: https://minholee93.tistory.com/entry/RabbitMQ-Prefetch
참고: https://www.cloudamqp.com/blog/how-to-optimize-the-rabbitmq-prefetch-count.html
참고: https://mio-java.tistory.com/100
- 개요(Prefetch)
- Queue의 메시지를 Consumer의 메모리에 쌓아둘 수 있는 최대 메시지 양
- Prefetch = 250 이라면, RabbitMQ는 250개 메시지까지 한번에 consumer에 push
- 이후 Consumer는 메모리에서 메시지를 하나씩 꺼내서 처리함
- prefetch 값에 따라 성능 차이가 크기에, 어플리케이션에 맞게 조정할 것
- Queue의 메시지를 Consumer의 메모리에 쌓아둘 수 있는 최대 메시지 양
- Prefetch 값으로 인해 일어날 수 있는 상황
- 메시지 500개 가정
- consumer1/consumer2 두개가 붙어있고 각기 250개씩
- consumer3 250짜리 추가했는데, 정작 메시지 다 consumer1/2가 가져가서 갈게 없음
- 각기 170개로 설정했으면 나을 뻔 했다~
- 추천값
- 메시지 처리속도 빠름 | 하나의 큐에 적은 consumer => prefetch HIGH
- 메시지 처리속도 빠름 | 하나의 큐에 많은 consumer => prefetch MIDDLE
- 메시지 처리 속도 느림 => prefetch 1
- Spring Cloud?
- MSA 구축에 필요한 라이브러리 집합
- 외부 시스템에 연결할 수 있는 어플리케이션 신속하게 구축하는 MSA 프레임워크
- 메시지 기반 마이크로 서비스 구현
- Spring Cloud Stream: 메시지 브로커의 독창적인 구성 제공해 미들웨어 공급업체에 pub/sub, 소비자 그룹 및 파티션 개념 도입
- 데이터 중심 어플리케이션 개별적으로 구축/테스트/반복 및 구축
- 메시징을 통한 구성 포함해 MSA 적용
- 어플리케이션 책임을 이벤트 중심적 사고와 분리
- 비즈니스 로직을 메시지 브로커에 포팅 (ex. RabbitMQ, Kafka)
- Project Reactor Flux, Kafka Streams API 사용한 어플리케이션 바인딩 시나리오
- 데이터가 도착할 때마다 지속적으로 처리되도록 구축