SpringCloud 的负载均衡 Ribbon OpeFeign
RestTemplate + ribbon返回Json格式数据
@Resource private RestTemplate restTemplate; @Resource private LoadBalancer loadBalancer; @Resource private DiscoveryClient discoveryClient; @GetMapping("/consumer/payment/create") public CommonResult<Payment> create(Payment payment) { return restTemplate.postForObject(PAYMENT_URL +"/payment/create",payment,CommonResult.class); }
负载均衡策略
默认轮询
*/ @SpringBootApplication @EnableEurekaClient //@RibbonClient(name = "CLOUD-PAYMENT-SERVICE",configuration=MySelfRule.class) public class OrderMain80 { public static void main(String[] args) { SpringApplication.run(OrderMain80.class, args); } }
OpenFegin
/** * @auther zzyy * @create 2020-02-19 23:59 */ @Component @FeignClient(value = "CLOUD-PAYMENT-SERVICE") public interface PaymentFeignService { @GetMapping(value = "/payment/get/{id}") public CommonResult<Payment> getPaymentById(@PathVariable("id") Long id); @GetMapping(value = "/payment/feign/timeout") public String paymentFeignTimeout(); }
直接在接口处指定调用的服务名称,指定的微服务名称在yml文件中指定
spring:
application:
name: cloud-payment-service
开启OpenFegin,直接添加在启动类
/** * @auther zzyy * @create 2020-02-19 23:57 */ @SpringBootApplication @EnableFeignClients public class OrderFeignMain80 { public static void main(String[] args) { SpringApplication.run(OrderFeignMain80.class, args); } }
因为OpenFeign的底层是ribbon进行负载均衡,所以它的超时时间是由ribbon控制
配置日志打印级别
logging:
level:
# feign日志以什么级别监控哪个接口
com.atguigu.springcloud.service.PaymentFeignService: debug
日志级别枚举类 Logger.Level
NONE
不输出日志
BASIC
只有请求方法、URL、响应状态代码、执行时间
HEADERS
基本信息以及请求和响应头
FULL
请求和响应 的heads、body、metadata,建议使用这个级别