Nacos 使用Fegin 远程调用、并负载均衡

2021-08-24  本文已影响0人  CodeYang

一、修改服务提供者层代码。

  1. 在启动类同级目录新建 controller文件夹,创建 ProviderController 。
@RestController
public class ProviderController {

    @Value("${server.port}")
    private String port;

    @RequestMapping("/provider/hello/{name}")
    public String hello(@PathVariable("name") String name){
        return name+" Welcome To ProviderController "+port;
    }
}
  1. 为了测试负载均衡,我们又不想再创建一个服务提供者模块者时,就可以通过以下方法解决。
    修改当前这个服务提供者的 application.yml,把端口改为动态端口。
server:
  port: ${prot:8001}  #未设置时,默认为8001
  1. 修改启动参数
    -Dprot=8001
修改启动参数.png
  1. 我们就可以创建多个启动APP,进行启动

二、修改消费者模块

  1. 使用 openfegin进行远程调用,pom 中新增 openfegin 依赖
    <!-- 远程调用 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
  1. 创建 service 服务,在启动类同级目录新建 service 文件夹,创建 ConsumerService 服务。

FeignClient 注解中的值为远程服务名,
接口中方法需要跟远程服务方法名相同。

@FeignClient("cloud-provider")
public interface ConsumerService {
    @RequestMapping("/provider/hello/{name}")
    public String hello(@PathVariable("name") String name);
}
  1. 创建 controller 控制层代码,在启动类同级目录新建 controller文件夹,创建 ConsumerController 。

这时就可以跟本地方法一样调用 service

@RestController
public class ConsumerController {

    //动态代理对象,内部远程调用服务生产者
    @Resource
    ConsumerService service;

    @GetMapping("/consumer/hello/{name}")
    public String hello(@PathVariable("name")String name){
        return service.hello(name)+" | ConsumerController";
    }
}

三、启动,观察 Nacos 是否注册成功。

服务列表.png

四、测试调用,观察负载均衡[轮询]

第一次调用.png 第二次调用.png
上一篇下一篇

猜你喜欢

热点阅读