Spring Cloud:服務消費(基礎)【Dalston版】

使用LoadBalancerClient

LoadBalancerClient 這是一個負載均衡客戶端的抽象定義.spring

咱們先來建立一個服務消費者工程,命名爲:eureka-consumer。並在pom.xml中引入依賴app

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <!-- 健康監控 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>負載均衡

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>函數

配置application.properties,指定eureka註冊中心的地址spring-boot

pring.application.name=eureka-consumer
server.port=2101

eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/

建立應用主類。初始化RestTemplate,用來真正發起REST請求。@EnableDiscoveryClient註解用來將當前應用加入到服務治理體系中url

@SpringBootApplication
@EnableDiscoveryClient
@ServletComponentScan(value = "com.demo.config")
public class Application {
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
    
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}spa

建立一個接口用來消費eureka-client提供的接口.net

@RestController
public class DcController {
    @Autowired
    LoadBalancerClient loadBalancerClient;
    @Autowired
    RestTemplate restTemplate;rest

    @GetMapping("/consumer")
    public String dc() {
        ServiceInstance serviceInstance = loadBalancerClient.choose("eureka-client");
        String url = "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/dc";
        System.out.println(url);
        return restTemplate.getForObject(url, String.class);
    }
}code

咱們注入了LoadBalancerClientRestTemplate,並在/consumer接口的實現中,先經過loadBalancerClientchoose函數來負載均衡的選出一個eureka-client的服務實例,這個服務實例的基本信息存儲在ServiceInstance中,而後經過這些對象中的信息拼接出訪問/dc接口的詳細地址,最後再利用RestTemplate對象實現對服務提供者接口的調用

相關文章
相關標籤/搜索