현재 msa 의 구조다.

아래는 msa 별 구현된 기능이 정리된 표이다.
아래표 에서 보면
http://localhost:xxxx/user/service/{userId} 요청이 들어오면
user정보와 해당 user의 주문 정보를 return 해야 한다.
user-service msa 는 user정보를 가지고 오는 logic 이 구현되어 있다.
하지만 주문정보는 order-service msa 가 처리 한다.
하여 user-service 에서 => order-service 를 호출 해야 한다.

서로 다른 msa 를 호출 하는 방법은 두가지가 있다.
1. RestTemplate 을 이용한 방법 (옛날 방법이고 Spring5.0 에서는 안쓴단다. 배우지 말자)
2. WebClient 방법 ( <= 요즘 쓰는 방법이고 이게 @FeignClient 를 쓰는 방법이다)
FeignClient 를 사용 하는 방법 설명
요점은 "user-service 에서 order-service 에 있는 method를 내가 가진 msa 처럼 interface 형식으로 구현해주면
호출 하는 시점에 order-service 에 해당 method 를 호출해서 return 값을 전달한다." 머 이런 내용이다.
1. 해당 기능은 Netflix 의 libary 라서 또 의존성을 넣어줘야 한다.
user-service -> order-service 를 호출 해야 해서 user-service 의 pom.xml 에 아래 내용 추가해야함.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>3.1.0</version>
</dependency>
2. user-service 에 order-service 를 inteface 로 구현한다.
order-service 에 구현된 method를 user-service 에 interface 해 놓으면 FeignClient 알아서 호출 해준다는 개념
@reginClient(name="ORDER-SERVICE") <- apigateway-service 에 등록된 order-service 의 instance 이름
@GetMapping("/order-service/{userId}/order") <- order-service 에 구현된것과 같은 내용의 mapping 정보


만들어 넣은 UserServiceClient( <- FeignClient 의 interface) 는 최초에 bean으로 생성 되지 않는다.
하여 UserController 에 주입 하기 위해 user-servcie 의 main 메소드 가진 class위에 @EnableFeignClients 를 붙여 줘야
Bean 생성을 해준다.

UserSerivceContrller 에서 UserServiceClient 를 사용 하는 logic을 넣는다.

정상 작동 확인함.

'SI 업무 > MSA관련' 카테고리의 다른 글
| secton 1-7. FeignClient log 사용 (0) | 2024.12.31 |
|---|---|
| section 1-5. Spring Cloud Config 에서 정보 받아 오기 (1) | 2024.12.29 |
| section 1-4. Spring Cloud Config (0) | 2024.12.29 |
| section 1-3. MSA 구성 설명/ gateway 설정 설명/ (0) | 2024.12.29 |
| section 1-2. user-service, catalog_service, order_service APIs (0) | 2024.12.27 |