728x90
반응형
Open Feign
- Netflix에서 처음 만들어진 선언적인(어노테이션 이용) HTTP Client Binder
- interface를 작성하고, annotaion을 선언한다.
- 마이크로 서비스 간에 통신 방법 중 하나로 많이 사용된다.
- 마이크로 서비스의 단점
- API 호출 증가 -> 분산 시스템에서 API 호출부분을 계속 만들어줘야한다.
- Feign의 장점
- 인터페이스 작성을 통해 재사용성을 높인다.
- 마이크로 서비스의 단점
목표
- Provider 서버로 api 제공
- Client 서버로 feign을 이용해 api 호출
Provider 서버
- 일반적으로 사용되고 있는 간단한 API 서버 작성
의존성 추가
dependencies{
implementation 'org.springframework.boot:spring-boot-starter-web'
}
서버 포트 변경
server:
port: 8081
컨트롤러
@RestController
public class ProviderController {
@GetMapping(value = "provider")
public String examProvider(){
return "provider";
}
}
Client 서버
의존성 추가
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
// Feign
implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'
}
설정
server:
port: 8082
feign:
client:
config:
default:
connectionTimeout: 1000
readTimeout: 3000
loggerLevel: FULL
인터페이스 정의
@FeignClient(value = "provider", url = "http://localhost:8081")
public interface ProviderCallFeignClient {
@GetMapping("/provider")
String callProvider();
}
Controller
@RestController
@RequiredArgsConstructor
public class FeignClientController {
private final ProviderCallFeignClient providerCallFeignClient;
@GetMapping("client")
public ResponseEntity client(){
System.out.println(providerCallFeignClient.callProvider());
return ResponseEntity.ok().body(providerCallFeignClient.callProvider());
}
}
EnableFeignClients 추가
@EnableFeignClients
@SpringBootApplication
public class FeignClientApplication {
public static void main(String[] args) {
SpringApplication.run(FeignClientApplication.class, args);
}
}
결과
- 8081 포트로 provider 서버에 접속 시 "provider"호출
- 8082 포트로 client 서버에 접속 시 feign을 이용해 provide 서버에 call하여 정보를 가져온다.
파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
반응형
'Spring > SpringCloud' 카테고리의 다른 글
[Feign Client] Invalid mime type \"{Content-Type}\": does not contain '/'" 에러 해결 (0) | 2024.05.20 |
---|---|
[SCG] Spring Cloud Gateway 기본 설정 및 헤더, 공통 에러 처리 (0) | 2022.08.17 |
[Spring Kafka] Kafka를 이용한 간단한 실습 (0) | 2021.09.13 |
[Spring Cloud Config] Spring Cloud Config를 이용한 환경설정 관리 (0) | 2021.09.10 |