티스토리 뷰

이번 포스팅은 Test가 주 내용 입니다. 바로 전에 작성한 포스팅을 참고해주세요.


먼저 테스트를 위해서 실행해야할 서비스 목록입니다.

Zookeeper - Server

Kafka - Server

Eureka - Sever( WorkSpace에서 Ecommerce라는 프로젝트)

ApiGateway - Service

Config - Service

Order - Service

Catalog - Service


#Eureka Server 접속

localhost:8761 로 접속해 Eureka 대쉬보드 확인해볼게요.

test에 앞서서 h2-console을 확인하려합니다.

접속하고자 하는 Service에 링크를 클릭해줍니다! 초록색 글씨로 되어있는 부분입니다.

#[OrderService]/h2-console 로 접속합니다. 

Connect에 접속 후 테이블 정보만 간단하게 확인해줄게요.

#Catalog-Service

마찬가지로 Catalogs도 확인해줍니다. Catalogs는 서비스 시작과 동시에 Insert를 해주기 떄문에 아래와 같이 결과가 나옵니다.


#POST-MAN TEST

test를 위해서 다음과 같은 URL을 보내려합니다. 원래 가운데 있는 ID값은 로그인한 경우에 유효한 값인게 맞지만, 아직 해당 ID값과 관련한 Security 설정을 하지 않아서 테스트하는데에는 무리가 없이 실행할 수 있습니다.

http://127.0.0.1:8000/order-service/c0eb0c0b-407c-41c6-94a6-4aff49b80cc8/orders

그리고 Body 값으로 아래와 같은 값을 주입시켰습니다.

Method 타입을 POST로 바꾸는 것도 잊지 말아주세요!

{
    "productId": "CATALOG-001",
    "qty": 30,
    "unitPrice": 1500
}

그리고 요청을 보내기전 STOCK이 몇개 였는지 확인 해줍니다.

CATLOG-001은 100개네요.

바로 요청을 시도해주세요.

정상적인 주문 완료 시 출력 화면

자 이제 다시 한번 catalogs의 항목을 살펴볼까요?

http://localhost:8000/catalog-service/catalogs 로 접속해줍니다.

와... 단순히 주문만 했을 뿐인데, Topic을 참조하면서 자동으로 Stock 값을 변동해줬어요.

이대로 끝내긴 아쉬우니 어떻게 동작하는지 조금 디테일하게 살펴볼게요.


#동작원리

주문을 하면 KafkaConsumersend 메서드를 호출합니다. 

그리고 KafkaTemplate를 통해서 Topic에 해당 정보를 String 형태로 보내게 됩니다.

그리고 Kafka에 진입점에 대한 정보는 이미 설정되어 있는 상태에요! Autowired를 통해서 KafkaTemplate를 주입시켰기 떄문이에요.

그럼 현 상태는 Producer에서 Kafka에 데이터를 전송한 상태가 됩니다.

 

 example-catalog-topic 토픽이 변경되었으니 Catalog-ServiceKafkaConsumer.java가 해당 내용을 탐지합니다. 

바로 @KafkaListener에 의해서죠! 그래서 해당 Topic값을 맞춰줬던 겁니다.

해당 Topic이 변경되게 되면 Producer에서 보낸 메시지를 Consumer에서는 저희가 지정한 방식으로 소비하게 됩니다.

그리고 Producer에서는 보낼때 직렬화 되어 있지만, 저희는 DESERIALIZER를 통해서 Json 형태로 적절하게 받을 수 있습니다. 

 

그리고 아래와 같이 productId 항목을 참조해 entity에 해당 상품에 대한 정보를 담습니다.

CatalogEntity entity = repository.findByProductId((String)map.get("productId"));

 

다음으로는 현재 entity의 stock값에서 주문정보안에 qty정보를 담습니다.

entity.setStock(entity.getStock() - (Integer)map.get("qty"));

 

마지막으로 .save를 통해 저장이 완료되면 Consumer의 역할이 끝나며 Stock은 줄어들 수 있었습니다.

 


#마치며 

정말 파면팔수록 아리송하면서도, 재밌는게 프로그래밍인 것 같습니다. 이번 실습은 재밌게 할 수 있어서 좋았습니다. 항상 새로운 기술을 사용해서, 프로그래밍은 하다보면, 나는 정말 우물안의 개구리구나 라는 생각으로 겸손해질 수 있어 좋은 것 같습니다. 

감사합니다!

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함