ribbon
pom
ribbon的依赖是包含在eureka-client中的
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
application.yml
server:
port: 9001
spring:
application:
name: consumer
eureka:
client:
# 表示是否将自己注册进入EurekaServer默认为true
register-with-eureka: true
# 是否从EurekaServer抓取已有的注册信息,默认为true
# 单节点不会有影响,集群环境必须设置为true才能配合ribbon使用负载均衡
fetch-registry: true
# 注册到的EurekaServer路径
service-url:
defaultZone: http://localhost:7001/eureka
restTemplate
使用LoadBalanced注解
@SpringBootApplication
@EnableEurekaClient
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
@Bean
@LoadBalanced //开启使用ribbon的RestTemplate,默认策略是轮询
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
使用
通过服务名调用,默认是轮询策略
@RestController
public class AppController {
@Autowired
private RestTemplate restTemplate;
//通过微服务服务名调用
private final String PREFIX = "http://PROVIDER";
@GetMapping
public List getAll() {
return restTemplate.getForObject(PREFIX + "/empt", List.class);
}
}