基本概念
- Feign是Netflix开发的声明式、模板化的HTTP客户端, Feign可以帮助我们更快捷、优雅地调用HTTP API。
- Feign支持多种注解,例如Feign自带的注解或者JAX-RS注解等。
- Spring Cloud对Feign进行了增强,使Feign支持了Spring
MVC注解,并整合了Ribbon和Eureka,从而让Feign的使用更加方便。 - Spring Cloud Feign是基于Netflix feign实现,整合了Spring Cloud Ribbon和Spring Cloud Hystrix,除了提供这两者的强大功能外,还提供了一种声明式的Web服务客户端定义的方式。
- Spring Cloud Feign帮助我们定义和实现依赖服务接口的定义。在Spring Cloud feign的实现下,只需要创建一个接口并用注解方式配置它,即可完成服务提供方的接口绑定,简化了在使用Spring Cloud Ribbon时自行封装服务调用客户端的开发量。
springboot整合openfeign
1.1、需求
service_edu服务调用service_vod服务的方法
1.2、引入依赖
<!--服务调用-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
1.3、调用端服务的启动类添加注解
@EnableFeignClients
1.4、创建FeignClient接口
方法以及参数与service-vod服务的方法参数一致
@FeignClient(name = "service-vod") //调用的服务名称
@Component
public interface VodClient {
//定义调用的方法路径
//根据视频id删除阿里云视频
//@PathVariable注解一定要指定参数名称,否则出错
@DeleteMapping("/eduvod/video/removeAlyVideo/{id}")
public R removeAlyVideo(@PathVariable("id") String id);
}
1.5、进行服务间通信,调用方法
//注入vodClient
@Autowired
private VodClient vodClient;
//删除小节
//删除小节,删除对应阿里云视频
@DeleteMapping("{id}")
public R deleteVideo(@PathVariable String id) {
//根据小节id获取视频id,调用方法实现视频删除
EduVideo eduVideo = videoService.getById(id);
String videoSourceId = eduVideo.getVideoSourceId();
//判断小节里面是否有视频id
if(!StringUtils.isEmpty(videoSourceId)) {
//根据视频id,远程调用实现视频删除
R result = vodClient.removeAlyVideo(videoSourceId);
if(result.getCode() == 20001) {
throw new GuliException(20001,"删除视频失败,熔断器...");
}
}
//删除小节
videoService.removeById(id);
return R.ok();
}
1.6、测试
结束!!!!
在自我面前,应当一向留有一个地方,独自留在那里。然后去爱。不明白是什么,不明白是谁,不明白如何去爱,也不明白能够爱多久。只是等待一次感情, 也许永远都没有人。可是,这种等待,就是感情本身。