spring cloud微服务(二)euraka服务消费者
【一】基于普通spring boot工程引入依赖
相对于eureka-client主要引入了spring-cloud-starter-netflix-eureka,以及spring-boot-starter-actuator,可以看到消费者本身也可以作为一个服务的提供者。
<properties>
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
【二】注入restTemplate用于发起rest请求
我们同样需要在启动类上面加@EnableDiscoveryClient,此外,还需要注入RestTemplate 。
@EnableDiscoveryClient
@SpringBootApplication
public class EurekaConsumerApplication {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(EurekaConsumerApplication.class, args);
}
}
【三】application.properties配置
此处与eureka-client 几乎一样,只需指定不同端口。
spring.application.name=eureka-consumer
server.port=2101
eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/
【四】测试接口,用于调用服务
/**
* @author : Aslan
* @version : v1.0
* @time : 2018-07-30 14:39
* @desc : 测试调用提供者提供的服务
*/
@RestController
public class TestController {
@Autowired
LoadBalancerClient loadBalancerClient;
@Autowired
RestTemplate restTemplate;
@GetMapping("/consumer")
public String testConsumer() {
//使用loadBalancerClient的choose方法负载均衡的选出一个eureka-client的服务实例
ServiceInstance serviceInstance = loadBalancerClient.choose("eureka-client");
//此处拼接之前eureka-client里面的接口
String url = "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/clientTest";
System.out.println(url);
return restTemplate.getForObject(url, String.class);
}
}
测试
下面是服务提供者【eureka-client】的测试接口代码:
我们启动依次启动eureka-server,eureka-client,eureka-cosumer,然后访问:http://localhost:2101/consumer,可以看到如下结果,成功调用了服务!