service-edu中模块有删小节的操作,但删除小节需要同时将上传到阿里云的视频删掉,但删除视频在另一个模块service-vod,这时候需要用到nacos,或者一个模块a组做,另一个模块b组做,这时候就需要调用
nacos都能用到
根据id和端口号进行注册
nacos安装
1,解压
2,nacos-bin-startup.cmd启动 注.sh是linux启动命令
3,访问nacos http://localhost:8848/nacos 用户名或密码 nacos/nacos
4,如下图,服务列表中会显示当前注册进来的服务
5,将service-edu和service-vod服务放在nacos中进行注册
①:引入依赖,放到他俩的父模块pom中
<!--服务注册-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
②:在要注册的服务的配置文件中appliaiton进行配置,几个模块的配置文件都要做
#nacos服务地址
spring.cloud.nacos.discovery.server-addr=127.0。0.1:8848 注意:实际开发中127.0。0.1应该写为具体的服务器地址
③:在启动类中添加注解
@EnableDiscoveryClient
看效果
使用Feign进行服务调用
想要实现edu和vod之间的互相调用
①:添加依赖
<!--服务调用-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
②:在调用端edu服务启动类添加注解@EnableFeignClients
③:在调用端创建interface,使用注解指定调用服务名称,定义调用的方法路径
package com.atguigu.eduservice.client;
import com.atguigu.commonutils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@FeignClient(name = "service-vod",fallback = VodFileDegradeFeignClient.class) //调用的服务名称
@Component
public interface VodClient {
//定义调用的方法路径
//根据视频id删除阿里云视频
//@PathVariable注解一定要指定参数名称,否则出错
@DeleteMapping("/eduvod/video/removeAlyVideo/{id}")
public R removeAlyVideo(@PathVariable("id") String id);
//定义调用删除多个视频的方法
//删除多个阿里云视频的方法
//参数多个视频id List videoIdList
@DeleteMapping("/eduvod/video/delete-batch")
public R deleteBatch(@RequestParam("videoIdList") List<String> videoIdList);
}