마이크로서비스간의 통신을 함에있어서 RestTemplate을 대신해 가독성이 더좋은 방법인 FeignClient를 알아본다.
먼저 호출하는 곳(유저서비스)에 디펜던시를 추가한다.
<!--Feign Client-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
그후 메인클래스에 어노테이션을 추가해준다.
@EnableFeignClients
인터페이스를 통해 다른 api를 호출하도록한다.
@FeignClient에서 name 속성은 유레카서버에 등록된 애플리케이션 이름을 뜻한다.
그후 order-service의ㅣ 매핑 url을 세팅후 호출하도록한다.
@FeignClient(name = "order-service")
public interface OrderServiceClient {
@GetMapping("/order-service/{userId}/orders")
List<ResponseOrder> getOrders(@PathVariable String userId);
}
List<ResponseOrder> orders = orderServiceClient.getOrders(userId);
userDto.setOrders(orders);
return userDto;
해당결과는 RestTemplate과 동일하다. 하지만 코드가독성이나 사용방법에서 조금더 익숙하고 편리하다.
'MSA' 카테고리의 다른 글
Zipkin 활용 (0) | 2023.09.12 |
---|---|
CircuitBreaker,Resilience4J 구현 (0) | 2023.09.12 |
RestTemplate (0) | 2023.09.04 |
RabbitMQ (0) | 2023.09.04 |
Config service (0) | 2023.09.04 |