더북(TheBook)

@EnableDiscoveryClient는 스프링 클라우드에서 애플리케이션이 Discovery Client 및 스프링 클라우드 로드 밸런서 라이브러리를 사용할 수 있게 한다. 이제 스프링 Discovery Client를 통해 조직 서비스를 호출하는 구현 코드를 살펴보자. 다음 코드는 이 구현을 보여 주는데 src/main/java/com/optimagrowth/license/service/client/OrganizationDiscoveryClient.java 파일에서 확인할 수 있다.

코드 6-12 Discovery Client를 사용한 정보 검색하기

@Component
public class OrganizationDiscoveryClient {

    @Autowired
    private DiscoveryClient discoveryClient; 

    public Organization getOrganization(String organizationId) {
        RestTemplate restTemplate = new RestTemplate();
        List<ServiceInstance> instances = 
            discoveryClient.getInstances("organization-service");

        if (instances.size() == 0) return null;
        String serviceUri = String.format(
            "%s/v1/organization/%s", instances.get(0).getUri().toString(),
            organizationId); 
    
        ResponseEntity< Organization > restExchange = 
            restTemplate.exchange(
                serviceUri,
                HttpMethod.GET,
                null, Organization.class, organizationId);

        return restExchange.getBody();
    }
}

➊ Discovery Client를 클래스에 주입한다.

➋ 조직 서비스의 모든 인스턴스 리스트를 얻는다.

➌ 서비스 엔드포인트를 검색해서 가져온다.

➍ 서비스 호출을 위해 표준 스프링 RestTemplate 클래스를 사용한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.