Feign作用:客户端负载均衡,服务注册中心的服务调用
Feign的使用方式是:使用Feign的注解定义接口,调用这个接口,就可以调用服务注册中心的服务。
@FeignClient(contextId = "remoteWarehouseService", value = ServiceNameConstants.BASE_SERVICE, fallbackFactory = RemoteMaterialFallbackFactory.class)
public interface RemoteWarehouseService {
@GetMapping("/warehouse/{id}")
R<BaseWarehouse> getWarehouse(@PathVariable("id") Long id);
}
contextId的作用是用来区分FeignClient实例value或name相同的不同bean;
value属性用于服务发现,这里的ServiceNameConstants.BASE_SERVICE是nacos里注册的服务名称,调用getWarehouse接口,就相当于调用ServiceNameConstants.BASE_SERVICE里的/warehouse/{id}接口;
fallbackFactory就是熔断工厂;
其他属性:serviceId已经废弃了,直接使用name或value即可;
如果配置了contextId 就会用 contextId,如果没有配置就会去 value 然后是 name 最后是 serviceId。
FallbackFactory(熔断工厂)
为什么需要熔断工厂?我的理解是:相当于保险丝的空气开关。当接口调用量到一定并发数的时候,触发熔断,以此来保护系统。