欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Springcloud中Ribbon的使用

程序员文章站 2022-06-22 16:20:11
...

1.导入依赖

  • Eureka中包含了Ribbon的依赖,可以不用导入Ribbon
  • 如果不是Eureka注册中心,那就再导入Ribbon
<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>


<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
    </dependency>

2.定义负载均衡的策略

  1. 官方明确说明Ribbon负载均衡的策略不要放在@ComponentScan所能扫描的包及其子包下面
  2. 也就是说不能放在主启动类所在的包及其子包
    Springcloud中Ribbon的使用

在主启动类包外建立新的包

Springcloud中Ribbon的使用

注册到spring容器,并返回轮询方法

@Configuration
public class MySelfRibbon {

    @Bean
    public IRule getRule(){
        return new RandomRule(); // 这里返回的是随机轮询
    }
}

主启动类添加注解:1.实现负载均衡的服务名称(注册到eureka中的) 2.规定实现轮询的方法的类

Springcloud中Ribbon的使用

这里实现负载均衡使用的是restTemplate

@Configuration
public class RestTempleConfig {


    @Bean
    @LoadBalanced //实现负载均衡的方式
    public RestTemplate getReStTemplate(){
        return new RestTemplate();
    }
}

实现服务的调用

@RestController
@RequestMapping("/consumer")
public class ConsumerController {



    private static final String URL="http://CLOUD-PAYMENT";

    @Resource
    private RestTemplate restTemplate;

    @GetMapping("/payment/create")
    public CommentResult<Payment> create(Payment payment){

       return restTemplate.postForObject(URL+"/payment/create",payment, CommentResult.class);
    	}
    }