SpringCloud服务注册中心Nacos

下载地址

1.解压后运行bin目录下的startup.cmd

2.访问Nacos

进入登录页面http://localhost:8848/nacos/

默认账号密码都是nacos

3.因为我需要在一个项目中调用另外一个项目的方法,也就是模块开发,所以需要把两个服务注册到nacos中

4.引入依赖

<!--服务注册-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

5.在项目application.properties中加入配置

# nacos服务地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

6.启动类添加注解

7.显示

Feign调用服务

1.导入依赖

<!--服务调用-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

2.在调用端的启动类添加注解

@EnableFeignClients

3.在调用端,创建interface方法,使用注解指定调用服务名称,定义调用方法路径

import com.mine.guli.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;

@Component
@FeignClient("service-vod") //注册中心服务的名字
public interface VodClient {

    //定义调用方法的路径
    //删除阿里云视频
    //@PathVariable一定要注意名称,否则会出错
    @DeleteMapping("/eduvod/video/removeAlyVideo/{id}")
    public R removeAlyVideo(@PathVariable("id") String id);

}

4.Controller层注入service方法

    @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删除,远程调用实现视频删除
            vodClient.removeAlyVideo(videoSourceId);
        }
        //删除小节
        videoService.removeById(id);
        return R.ok();
    }