본문 바로가기
해피 코딩/Today I Learned

[TIL 14] RabbitMQ 추가 실습 + JMeter

by happy-coding 2024. 8. 18.

 Today I Learned

🔥 실습 설계도를 그리고 동작 순서를 알아보며, 추가로 JMeter를 사용하여 성능을 확인해 보자!

[ RabbitMQ 실습 설계도 ]

실습 설계도

동작하는 3가지 경우의 순서를 확인하자!
  • 모든 로직이 성공적으로 동작할 경우
  • product 에서 error가 발생할 경우
  • product 를 통과했으나 payment 에서 error가 발생했을 경우

[ 동작 순서 ]

모든 로직이 성공적으로 동작할 경우
  • productQuantity가 1이고, payAmount가 10000보다 작을 경우 모든 로직이 성공적으로 동작한다.

모든 로직이 성공 할 경우

  1. order(Producer)에서 메시지를 보낸다.
  2. exchange, market.product (queue)를 통하여 product(Consumer)에 메시지를 전달한다. 
  3. product에서 문제가 없을 경우, exchange, maket.payment (queue)를 통하여 payment(Consumer)로 메시지를 보내준다.
  4. 이때 product는 Producer가 되고, payment는 Consumer가 된다.

product 에서 error가 발생할 경우
  • productQuantity가 1보다 클경우 product에서 error발생

product 에서 error발생 시키기

 

orderId 조회

  1. order(Producer)에서 메시지를 전송하고, product(Consumer)에서 메시지를 받는다.
  2. productQuantity가 1보다 크기때문에 product(Consumer)에서 에러가 발생한다.
  3. product에서 err.exchange, marker.err.order를 통하여 order에 에러 메시지를 전송한다.

product 를 통과했으나 payment 에서 error가 발생했을 경우
  • productQuantity가 1이고, payAmount가 10000보다 크거나 같을 경우 payment에서 error가 발생

payment 에서 error발생 시키기
orderId 조회

  1. product(Producer)에서 메시지를 전송하고, payment(Consumer)에서 메시지를 받는다.
  2. payAmount가 10000보다 크거나 같기 때문에  payment(Consumer)에서 에러가 발생한다.
  3. payment에서 err.exchange, marker.err.product를 통하여 product에 에러 메시지를 전송한다.
  4. product에서 @RabbitListner를 통하여 에러 메시지를 받고,  err.exchange, marker.err.order를 통하여 order에 에러 메시지를 전송한다.

[ JMeter를 사용하여 성능 확인 ]


쓰레드 그룹 생성

 

요청
  • 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