1.我们通过java -jar的方式启动两个不同端口的hello-service项目
java -jar E:\ideaWork\cloudLearn\eureka-client\target\eureka-client-0.0.1-SNAPSHOT.jar --server.port=8081
java -jar E:\ideaWork\cloudLearn\eureka-client\target\eureka-client-0.0.1-SNAPSHOT.jar --server.port=8082
然后打开服务中心,发现有两个hello-service实例启动
2.新建ribbon-consumer项目。pom文件中增加对ribbon的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
3.在启动类上增加@EnableDiscoveryClient注解将其注册成客户端,并且创建RestTemplte的spring bean实例,并且通过@LoadBanlanced注解实现负载均衡
@SpringBootApplication
@EnableDiscoveryClient
public class RibbonConsumerApplication {
@Bean
@LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(RibbonConsumerApplication.class, args);
}
}
创建ConsumerController类,通过上面的RestTemplate对hello-service服务的调用
@RestController
public class ConsumerController {
@Autowired
private RestTemplate restTemplate;
@RequestMapping("/ribbon-consumer")
public String helloConsumer(){
return restTemplate.getForEntity("http://hello-service/hello",String.class).getBody();
}
}
这里可以看到调用服务用的是服务名hello-service
4.启动项目,向ribbon-consumer项目发送请求,不断刷新会看到两个hello-service项目控制台轮流打印相关日志。