在项目:spring-cloud-eureka-provider-1
,spring-cloud-eureka-provider-2
,spring-cloud-eureka-provider-3
的启动类,都加入@Value("${server.port}")
,修改home()
方法, 来区分不同端口的Controller 响应,因为接下来,使用ribbon
做均衡需要测试需要使用到。
@SpringBootApplication
@EnableEurekaClient
@RestController
public class EurekaProviderApplication {
@Value("${server.port}")
String port;
@RequestMapping("/")
public String home() {
return "Hello world ,port:" + port;
}
public static void main(String[] args) {
SpringApplication.run(EurekaProviderApplication.class, args);
}
}
配置
在项目:spring-cloud-eureka-provider-1
,spring-cloud-eureka-provider-2
,spring-cloud-eureka-provider-3
,修改server: port:端口依次为8081,8082,8083。
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
spring:
application:
name: eureka-provider
server:
port: 8081
服务消费者(Ribbon Consumer)
添加依赖 新建 spring-cloud-ribbon-consumer
org.springframework.cloud
spring-cloud-starter-ribbon
org.springframework.cloud
spring-cloud-starter-eureka
开启服务负载均衡 在工程的启动类中,通过@EnableDiscoveryClient
向服务注册中心注册;并且向程序的ioc
注入一个bean: restTemplate
并通过@LoadBalanced
注解表明这个restRemplate
开启负载均衡的功能。
@EnableDiscoveryClient
@SpringBootApplication
public class RibbonConsumerApplication {
@LoadBalanced
@Bean
RestTemplate restTemplate() {
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(RibbonConsumerApplication.class, args);
}
}
消费提供者方法
新建 ConsumerController
类,调用提供者的 hello 方法
/**
* 描述:调用提供者的 `home` 方法
*
* @author yanpenglei
* @create 2017-12-05 18:53
**/
@RestController
public class ConsumerController {
@Autowired
private RestTemplate restTemplate;
@GetMapping(value = "/hello")
public String hello() {
return restTemplate.getForEntity("http://eureka-provider/", String.class).getBody();
}
}
添加配置
完整配置 application.yml
指定服务的注册中心地址,配置自己的服务端口,服务名称
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
spring:
application:
name: ribbon-consumer
server:
port: 9000
测试服务
启动服务,依次启动项目:
spring-cloud-eureka-service
spring-cloud-eureka-provider-1
spring-cloud-eureka-provider-2
spring-cloud-eureka-provider-3
spring-cloud-ribbon-consumer
启动该工程后,访问服务注册中心,查看服务是否都已注册成功:http://localhost:8761/
在命令窗口curl http://localhost:9000/hello
,发现Ribbon已经实现负载均衡
或者浏览器get
请求http://localhost:9000/hello
F5 刷新