java学习笔记整理

如何使用Nacos做注册中心

2020-11-19  本文已影响0人  _借东西的小人

要解决的问题:假设我有两个服务,分别是服务service-edu(服务调用者)和服务service-vod(服务提供者),想在服务service-edu中调用服务service-vod的方法。

将服务在注册中心中注册

1.下载nacos并成功启动,进入登录页面进行登录。

注意用户名和密码都是nacos

2.点击服务管理下的服务列表,可以发现是空的

image.png

3.在这两个服务的父工程中引入服务注册依赖

项目结构图.png
        <!--服务注册-->
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
         </dependency>

4.分别给服务service-edu和服务service-vod的配置文件application.properties中添加nacos服务地址

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

5.分别给服务service-edu和服务service-vod的启动类上添加注解,注册nacos

@EnableDiscoveryClient

启动类.png
启动服务service-edu和服务service-vod,刷新服务列表,会显示当前注册的所有服务,以及每个服务的集群数目、实例数、健康实例数。点击详情,我们还能看到每个服务具体的实例信息,如下图所示:
服务列表.png

服务调用者

Feign是SpringCloud中服务消费端的调用框架。
在SpringCloud中,使用Feign非常简单——创建一个接口,并在接口上添加一些注解,代码就完成了。

1.在这两个服务的父工程中引入服务调用依赖

<dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-openfeign</artifactId>
         </dependency>

2.创建一个接口,使用@FeignClient注解,调用服务提供者的方法


@FeignClient("service-vod")//service-vod就是在service-vod服务的配置文件中定义的服务名
@Component
public interface VodClient {


    /**
     * 定义要调用的方法路径
     * 根据视频id删除阿里云中的视频
     * @PathVariable("id")注解一定要指定参数名称,否则出错
     * @param id
     * @return
     */
    @DeleteMapping("/eduvod/video/removeAlyVideo/{id}")
    public R deleteVideoById(@PathVariable("id") String id);
}

3.在控制层调用service-vod服务的方法

注入刚刚创建的接口即可调用方法

 //注入vodClient
@Autowired
private VodClient vodClient;
    vodClient.deleteVideoById(videoId);
上一篇 下一篇

猜你喜欢

热点阅读