728x90
반응형
OpenFeign
Java에서 RESTful 웹 서비스 클라이언트를 쉽게 작성할 수 있도록 도와주는 라이브러리이다.
- REST 클라이언트를 선언적 방식으로 정의
- RESTful 웹 서비스와 통신할 때 코드를 간소화
💡 Spring Cloud와 같은 마이크로서비스 아키텍처에서 클라이언트 간 통신을 구현할 때 주로 사용한다.
예시
OpenFeign을 사용하여 RESTful 서비스에 요청을 Req
import feign.*;
public interface MyServiceClient {
@RequestLine("GET /api/resource/{id}")
Resource getResource(@Param("id") String id);
}
- 인터페이스를 정의하고 Spring 애플리케이션에 등록하면, OpenFeign이 자동으로 이를 구현하여 RESTful 서비스에 대한 클라이언트를 생성한다.
OpenFeign을 사용하여 RESTful 서비스에 GET 요청보내기
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class MyService {
@Autowired
private MyServiceClient myServiceClient;
public Resource getResource(String id) {
return myServiceClient.getResource(id);
}
}
@FeignClient
OpenFeign을 사용하여 RESTful 서비스에 대한 클라이언트를 선언하는 데 사용한다.
- 이 애너테이션을 사용시 인터페이스를 정의하고 해당 인터페이스에 대한 구현체를 생성하지 않아도된다.
- Spring이 런타임에 이를 처리하고 필요한 클라이언트 인스턴스를 생성하여 주입한다.
예시
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@FeignClient(name = "my-service", url = "<http://localhost:8080>",
fallback = "MyServiceFallback.class")
public interface MyServiceClient {
// getResource 메서드를 사용 "/api/resource/{id}" 엔드포인트로 GET 요청을 보내는 방법을 정의
@GetMapping("/api/resource/{id}")
Resource getResource(@PathVariable("id") String id);
}
- **@FeignClient**를 사용하여 "my-service"라는 이름의 Feign 클라이언트를 정의하고, 이 클라이언트가 요청을 보낼 기본 URL을 "http://localhost:8080"으로 지정했다.
- fallback 클래스를 MyServiceFallback.class로 지정해 대체 동작을 정의했다.
옵션
- value : Feign 클라이언트의 이름 또는 목적지 서비스의 이름
- url : 요청을 보낼 기본 URL
- path : 기본 URL에 연결될 상대 경로 (url 과 path가 서로 결합되어 최종 요청 URL이 생성된다.)
- configuration : Feign 클라이언트의 구성을 지정하는데 사용
- fallback : Feign 클라이언트의 Fallback클래스를 지정하여 요청 실패시 대체 동작 정의
728x90
반응형
'벡엔드 > MSA' 카테고리의 다른 글
카프카(Kafka)를 사용하는 이유 (0) | 2024.03.26 |
---|---|
Helm bitnami를 사용한 카프카(kafka) 설치 24.03 (1) | 2024.03.25 |
EKS에 Helm bitnami 을 이용한 Kafka 구축 중 SASL 에러 (1) | 2024.03.25 |
Retry & DLQ (0) | 2024.03.21 |
Kafka Scaling 카프카 스케일링 (0) | 2024.03.20 |