스프링 클라우드 feignClient
Communication Types
- Rest Template, Fegin Client 같은것들이 존재한다.
-
Rest Template에서 Eureka Discovery Service에서 받았던 Order Service의 정보를 가지고 직접 호출 하게 된다.
- http://127.0.0.1:8000/user-service/users/{userId} > REST TEMPLATE > http://127.0.0.1:8000/order-service/{userId}/orders
- user-serivce에서 order-service를 Eureka Discovery Service에서 호출하게 된다.
Feign Client
- REST Call을 추상화 한 Spring Cloud Netflix 라이브러리
- 호출하려는 HTTP EndPoint 에 대한 인터페이스 생성
- @FeignClient 선언
- Load Balanced 지원
사용방법
- openfeign 디펜던시 추가
@SpringBootApplication @EnableDiscoveryClient @EnableFeignClients public class UserServiceApplication {}
- 유레카에 등록되어진 마이크로 서비스인 order-service를 호출을 하게 될 것이다. 이 서비스가 가지는 다양한 URI중에서
order-service/{userId}/orders
를 호출할것이다. - order-service : ORDER-SERVICE 의 application name
- /order-service/{userId}/orders : 주문 확인을 위한 URI
@FeignClient(name = "order-service")
public interface OrderServiceClient {
@GetMapping("/order-service/{userId}/orders")
List<ResponseOrder> getOrders(@PathVariable String userId);
}