当前位置: 代码迷 >> 综合 >> Feign 远程调用、Ribbin 负载均衡和重试
  详细解决方案

Feign 远程调用、Ribbin 负载均衡和重试

热度:103   发布时间:2023-11-14 21:14:07.0

Feign 远程调用

1.添加feign依赖

请添加图片描述

2.启动类添加注解

@EnableFeignClients 触发 Feign 自动配置,扫描远程调用接口,创建动态代理对象

3.定义远程调用接口

/* 商品调用 声明式客户端接口--不需要写代码,feign会自己写 三步配置: 1.调用哪个模块 2.调用哪个路径 3.提交什么参数*/
@FeignClient(name = "item-service")//写注册表中的名字,eureka会根据这个名字找到这个服务的地址
public interface ItemClient {
    /*spring mvc注解:在这里起的作用是相反的作用--作为客户端去调用服务器- controller 响应客户端调用- 客户端接口 向服务器发送调用*///获取商品列表@GetMapping("/{orderId}")JsonResult<List<Item>> getItems(@PathVariable("orderId") String orderId);//减少商品库存@PostMapping("/decreaseNumber")JsonResult<?> decreaseNumber(@RequestBody List<Item> items);
}
  • 这里就是feign的客户端,先是通过@FeignClient(name = "item-service")在eureka列表中找到要调用的服务,接着通过@GetMapping("/{orderId}")找到对应的controller请求,再通过
    JsonResult<List<Item>> getItems(@PathVariable("orderId") String orderId);创建代理对象完成功能(个人理解)

4.在service实现类中注入这个接口完成服务调用

Ribbin 负载均衡和重试

请添加图片描述

1.添加依赖

  • eureka中已经添加了Ribbon依赖

2.RestTemplate 设置 @LoadBalanced

@LoadBalanced 负载均衡注解,会对 RestTemplate 实例进行封装,创建动态代理对象,并切入(AOP)负载均衡代码,把请求分发到集群中的服务器

@EnableDiscoveryClient
@SpringBootApplication
public class Sp06RibbonApplication {
    @LoadBalanced //负载均衡注解@Beanpublic RestTemplate getRestTemplate() {
    return new RestTemplate();}

之后会跟新重试

  相关解决方案