1.引入依赖
成功把需要交互的两个服务注册到Nacos后 具体的调用是通过Feign来实现的
引入Feign的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.在服务调用端(消费者)的启动类上添加注解
@EnableFeignClients
**注:**服务调用端 消费者
服务被调用端 生产者
3.在服务调用端(消费者)创建调用的接口
@Component
@FeignClient("service-vod")//需要调用的服务名(在nacos中注册的)
public interface VodClient {
@DeleteMapping("/eduvod/video/deleteAliyunVideo/{videoId}")//被调用的服务Controller中的方法的全路径
public R deleteAliyunVideo(@PathVariable("id") String videoId);//这里的PathVariable注解必须标注参数名称
}
4.调用生产者的方法
在服务消费者需要的Controller中注入刚刚创建的VodClient接口
@Autowired
private VodClient vodClient;
直接在方法中调用接口中的方法即可
//TODO 删除阿里云端的视频 方法 在VodController中
@DeleteMapping("deleteVideo/{videoId}")
public R deleteVideo(@PathVariable String videoId){//这里的videoId是小节id
//通过小节videoId得到 小节对象
EduVideo eduVideo = eduVideoService.getById(videoId);
//通过小节对象得到视频id
String videosourseId = eduVideo.getVideoSourceId();
if(!StringUtils.isEmpty(videosourseId)) {
//先删视频再删小节 否则得到的视频id为空
vodClient.deleteAliyunVideo(videoId);
}
eduVideoService.removeById(videoId);
return R.ok();
}
}