springcloud中的服务消费者
springcloud服务调用方式有两种实现方式:
1,restTemplate+ribbon,
2,feign
本来想一篇讲完,发现篇幅有点长,所以本章先讲 restTemplate+ribbon,
ribbon是一个负载均衡客户端,可以很好的控制htt和tcp的一些行为。
Feign默认集成了ribbon。
项目实战:
新一个springboot项目,名字为 eureka-consumer-ribbon
其pom.xml配置如下
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <java.version>1.8</java.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-eureka</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.cloud</groupId>
- <artifactId>spring-cloud-starter-ribbon</artifactId>
- </dependency>
- </dependencies>
- <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>
并且使用@bean像spring容器中注入一个restTemplate对象,@LoadBalanced注解表明这个restRemplate开启负载均衡的功能。
- @EnableDiscoveryClient
- @SpringBootApplication
- public class Application {
- @Bean
- @LoadBalanced
- public RestTemplate restTemplate() {
- return new RestTemplate();
- }
- public static void main(String[] args) {
- new SpringApplicationBuilder(Application.class).web(true).run(args);
- }
- }
- spring.application.name=eureka-consumer-ribbon
- server.port=9101
- eureka.client.serviceUrl.defaultZone=http://localhost:9001/eureka/
- @RestController
- public class RibbonController {
- @Autowired
- RestTemplate restTemplate;
- @GetMapping("/consumer")
- public String getMsg() {
- return restTemplate.getForObject("http://eureka-client/client", String.class);
- }
- }
使用上一章已经创建的项目eureka-server,eureka-client这俩项目
首先:
1,启动 eureka-server
2,启动 eureka-client 配置文件的端口默认为9002
3,修改配置文件的端口为9003,再启动一个eureka-client
4,在启动 eureka-consumer-ribbon
访问http://localhost:9001/,就会发现,已经有eureka-clent服务注册了,而且有两个实例,9002和9003
访问 http://localhost:9101/consumer,就会发现已经消费了 eureka-client项目提供的服务,而且ribbon已经默认实现了负载均衡