【Spring Cloud学习】服务消费者

来源:互联网 发布:dede cms 排行榜文章 编辑:程序博客网 时间:2024/06/07 02:28

Spring cloud的服务消费端主要使用到了Spring cloud Ribbon作为负载均衡,服务消费端主要实现两个目标,发现以及消费服务。其中发现服务由Eureka实现,消费服务由Riboon实现。下面是一个Demo实例供大家学习参考。

(1)引入eureka和ribbon包

    <dependency>      <groupId>org.springframework.cloud</groupId>      <artifactId>spring-cloud-starter-eureka</artifactId>    </dependency>    <!-- 整合ribbon -->    <dependency>      <groupId>org.springframework.cloud</groupId>      <artifactId>spring-cloud-starter-ribbon</artifactId>    </dependency>

(2)服务启动中加入注解

@SpringBootApplication@EnableDiscoveryClientpublic class MovieRibbonApplication {  /**   * 实例化RestTemplate,通过@LoadBalanced注解开启均衡负载能力.   * @return restTemplate   */  @Bean  @LoadBalanced  public RestTemplate restTemplate() {    return new RestTemplate();  }  public static void main(String[] args) {    SpringApplication.run(MovieRibbonApplication.class, args);  }}
(3)yml配置文件中配置消费端属性

server:  port: 8010spring:  application:    name: microservice-consumer-movie-ribboneureka:  client:    serviceUrl:      defaultZone: http://discovery:8761/eureka/  instance:    preferIpAddress: true #表名服务是以ip的形式展示

(4)消费端控制层

@RestControllerpublic class RibbonController {  @Autowired  private RibbonService ribbonService;  @GetMapping("/ribbon/{id}")  public User findById(@PathVariable Long id) {    return this.ribbonService.findById(id);  }}
(5)服务层调用注册中心的微服务

@Servicepublic class RibbonService {  @Autowired  private RestTemplate restTemplate;  public User findById(Long id) {    // http://服务提供者的serviceId/url    return this.restTemplate.getForObject("http://microservice-provider-user/" + id, User.class);  }} 
以上步骤完成就已经实现一个简单的通过Ribbon实现负载均衡的消费端了。