더북(TheBook)

이제 로드 밸런서 지원 RestTemplate 클래스에 대한 빈을 정의했으므로, 서비스를 호출할 때 RestTemplate 빈을 사용하려면 해당 빈을 사용할 클래스에서 자동 연결(autowire)만 하면 된다.

이러한 RestTemplate 클래스를 사용하는 것은 대상 서비스에 대한 URL을 정의하는 방식에서 한 가지 작은 차이점을 제외하고는 표준 스프링 RestTemplate 클래스와 매우 유사하다. RestTemplate 호출에서 서비스의 물리적 위치 대신 호출하려는 서비스의 유레카 서비스 ID를 사용하여 대상 URL을 생성해야 한다. 다음 코드에서 이 호출 과정을 확인할 수 있다. src/main/java/com/optimagrowth/license/service/client/OrganizationRestTemplateClient.java 클래스 파일에서 이 코드를 확인하자.

코드 6-14 로드 밸런서를 지원하는 RestTemplate을 사용한 서비스 호출하기

// 이해를 돕기 위해 대부분의 import 문은 생략
@Component
public class OrganizationRestTemplateClient {
    @Autowired
    RestTemplate restTemplate;

    public Organization getOrganization(String organizationId) {
        ResponseEntity<Organization> restExchange =
            restTemplate.exchange(
                "http://organization-service/v1/
                    organization/{organizationId}", 
                HttpMethod.GET, null, 
                Organization.class, organizationId);

        return restExchange.getBody();
    }
}

➊ 로드 밸런서 지원 RestTemplate을 사용할 때 유레카 서비스 ID로 대상 URL을 생성한다.

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