1.依赖的引入
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
在引入eureka客户端的坐标时自带的有Ribbon依赖,所以无需单独引入
restTemplate.getForObject与restTemplate.getForEntity的区别
restTemplate.getForObject调用别的服务的方法后只返回响应体中数据转化的对象,基本可以理解为json
而restTemplate.getForEntity调用别的服务的方法后返回值包含响应中一些重要的信息,例如响应头、响应状态吗、响应体等。
二者区别如下代码
@GetMapping("/consumer/payment/get/{id}")
public CommonResult<Payment> getPayment(@PathVariable("id") Long id)
{
return restTemplate.getForObject(PAYMENT_URL+"/payment/get/"+id,CommonResult.class);
}
@GetMapping("/consumer/payment/getForEntity/{id}")
public CommonResult<Payment> getPayment2(@PathVariable("id") Long id)
{
ResponseEntity<CommonResult> entity = restTemplate.getForEntity(PAYMENT_URL+"/payment/get/"+id,CommonResult.class);
if(entity.getStatusCode().is2xxSuccessful()){
return entity.getBody();
}else{
return new CommonResult<>(444,"操作失败");
}
}
Ribbon核心组件IRule
IRule负载规则替换方法
第一步:创建一个包myrule,里面创建一个配置类MySelfRule
@Configuration
public class MySelfRule
{
@Bean
public IRule myRule()
{
return new RandomRule();//定义为随机
}
}
第二步:在主启动类上加注解@RibbonClient
@SpringBootApplication
@EnableEurekaClient
@RibbonClient(name = "CLOUD-PAYMENT-SERVICE",configuration= MySelfRule.class)
//CLOUD-PAYMENT-SERVICE是服务提供者的服务名,configuration= MySelfRule.class是配置类
public class OrderMain80 {
public static void main(String[] args) {
SpringApplication.run(OrderMain80.class,args);
}
}
轮询算法原理