FeignClient 를 활용해보기(feat. Eureka)
https://yjkim-dev.tistory.com/109
를 먼저 보고오시는 것을 추천합니다. (내용이 이어지기때문)
MSA에서는 내부통신이 많이 일어납니다.
주로 Eureka에 등록해놓고, 그 인스턴스의 정보를 가져와 주소를 알아내고 요청을 합니다.
1번서버는 2번서버의 리턴값을 리턴하는 서비스가 있고,
2번서버는 문자열 "2번서버"를 리턴하는 서비스가 있습니다.
1번서버에서 -> 2번서버로 내부통신을 해 2번서버의 있는 리턴값을 가져와서
최종적으로 게이트웨이를 통해 1번서버를 호출했지만 2번서버의 리턴값을 가져오도록 해봤습니다.
List<ServiceInstance> instances = discoveryClient.getInstances("my-second-service");
위에 코드를 통해 유레카에 등록되어있는 클라이언트의 인스턴스명을 가져와 정보를 얻어내는 방식을 사용햇습니다.
FeignClient 이용하여 더 간단히 해보자
제목그대로 feignClient를 이용하면 MSA에서 자주 있을법한 내부통신을 간단하게 만들어준 라이브러리입니다. (넷플릭스에서 만듬)
바로 코드로 보여드리겠습니다.
FeignClient 코드 설정
build.gradle 설정을 해줍니다.
implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'
SecondServiceClient 인터페이스를 만들어줍니다.
@FeignClient 이게 핵심인데, 유레카에 등록된 서비스의 인스턴스명을 적어주면 통신이 바로 됩니다.
2번서버의 요청보낼 주소를 미리 @GetMapping 으로 만들어줍니다.
다시 controller로 돌아가
방금 만들었던 인터페이스를 호출만하면 됩니다.
호출할때 인터페이스에 각종 헤더나 바디, 파라미터, 타임아웃 세션 설정을 다 할수 있습니다.
그래서 간편하게 호출이 가능합니다.
테스트 해보기
1번서버의 API 주소를 입력했지만, 2번서버의 리턴 문자열이 응답이 오고 있습니다.
테스트 완료.