Today I Learned
🔥 실습 설계도를 그리고 동작 순서를 알아보며, 추가로 JMeter를 사용하여 성능을 확인해 보자!
[ RabbitMQ 실습 설계도 ]
동작하는 3가지 경우의 순서를 확인하자!
- 모든 로직이 성공적으로 동작할 경우
- product 에서 error가 발생할 경우
- product 를 통과했으나 payment 에서 error가 발생했을 경우
[ 동작 순서 ]
모든 로직이 성공적으로 동작할 경우
- productQuantity가 1이고, payAmount가 10000보다 작을 경우 모든 로직이 성공적으로 동작한다.
- order(Producer)에서 메시지를 보낸다.
- exchange, market.product (queue)를 통하여 product(Consumer)에 메시지를 전달한다.
- product에서 문제가 없을 경우, exchange, maket.payment (queue)를 통하여 payment(Consumer)로 메시지를 보내준다.
- 이때 product는 Producer가 되고, payment는 Consumer가 된다.
product 에서 error가 발생할 경우
- productQuantity가 1보다 클경우 product에서 error발생
- order(Producer)에서 메시지를 전송하고, product(Consumer)에서 메시지를 받는다.
- productQuantity가 1보다 크기때문에 product(Consumer)에서 에러가 발생한다.
- product에서 err.exchange, marker.err.order를 통하여 order에 에러 메시지를 전송한다.
product 를 통과했으나 payment 에서 error가 발생했을 경우
- productQuantity가 1이고, payAmount가 10000보다 크거나 같을 경우 payment에서 error가 발생
- product(Producer)에서 메시지를 전송하고, payment(Consumer)에서 메시지를 받는다.
- payAmount가 10000보다 크거나 같기 때문에 payment(Consumer)에서 에러가 발생한다.
- payment에서 err.exchange, marker.err.product를 통하여 product에 에러 메시지를 전송한다.
- product에서 @RabbitListner를 통하여 에러 메시지를 받고, err.exchange, marker.err.order를 통하여 order에 에러 메시지를 전송한다.
[ JMeter를 사용하여 성능 확인 ]
- JMeter Download5.6.3: https://jmeter.apache.org/download_jmeter.cgi
- 압축 해제 후 bin 폴더 안에 jmeter.bat 실행
쓰레드 그룹 생성
요청
- 100명의 사용자가 각 10번씩 요청하여 1000번의 요청이 이루어지는 테스트 시나리오 입니다.
HTTP 요청 생성
HTTP 요청 정보 입력
HTTP HEADERS 추가
보고서 추가
- 실행 결과를 보기 위한 보고서 2개 추가
[ JMeter Test ]
모든 로직이 성공적으로 동작할 경우 Test
- 상단의 재생 버튼을 클릭하여 테스트 진행
결과들의 트리보기
- 테스트 요청에 대한 응답 결과 확인
요약 보고서
- 100명의 사용자가 각 10번씩 요청하여 1000번의 요청 확인
- 처리량을 통한 TPS를 확인
이번에는 RabbitMQ 추가 실습을 진행하였다. 설계도를 직접 그려보며 RabbitMQ가 동작하는 것에 대한 이해가 한 층 더 높아졌고, JMeter를 사용하여 성능을 확인해 보았다. 아직 갈 길이 멀지만 대용량 스트림 처리에 대해 한 발 더 나아간 것 같다.
읽어주셔서 감사합니다 😊
😺 GitHub: https://github.com/mad-cost/Sparta-RabbitMQ-AddStudy
'해피 코딩 > Today I Learned' 카테고리의 다른 글
[TIL 15] DB Lock의 종류와 문제 사례 (0) | 2024.08.22 |
---|---|
[TIL 13] prometheus 설정 에러 / 대체 나한테 왜그래ㅠ.. (1) | 2024.08.19 |
[TIL 12] RabbitMQ 이론 정복하기 (0) | 2024.08.16 |
[TIL 11] Chater 1. 과제와 피드백 내용 (0) | 2024.08.15 |
[TIL 10] 대규모 스트림 처리 (0) | 2024.08.13 |