springboot 整合feign完成服务间通信功能

基本概念

  • 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、测试

结束!!!!


在自我面前,应当一向留有一个地方,独自留在那里。然后去爱。不明白是什么,不明白是谁,不明白如何去爱,也不明白能够爱多久。只是等待一次感情, 也许永远都没有人。可是,这种等待,就是感情本身。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值