SpringCloud Fegin结合Ribbon实现负载均衡

Fegin包含了Ribbon,可以直接实现负载均衡功能。这里我们就在Ribbon的项目稍微进行改造下实现该功能。
了解springcloud架构可以加求求:三五三六二四七二五九
首先在pom文件添加Fegin的依赖包。

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

然后在springcloud-ribbon-consumer项目的启动类上添加@EnableFeignClients注解,启用feign进行远程调用。

添加完成之后,新建一个类,实现feign远程调用。
代码如下:

  @FeignClient(name= "springcloud-ribbon-consumer2") 
    public interface HelloRemote {
        @RequestMapping(value = "/hello")
        public String hello(@RequestParam(value = "name") String name);
    }

最后在提供一个新的接口供外部调用。这里就直接在之前的代码上新加一个接口了。
代码如下:


    @RestController
    public class ConsumerController {
       
        @Autowired
        RestTemplate restTemplate;
        
        @RequestMapping("/hello")
        public String hello() {
            return restTemplate.getForObject("http://springcloud-ribbon-consumer2/hello/?name=xuwujing", String.class);
        }
        
       
        @Autowired
        HelloRemote helloRemote;
        
        @RequestMapping("/hello/{name}")
        public String index(@PathVariable("name") String name) {
            System.out.println("接受到请求参数:"+name+",进行转发到其他服务!");
            return helloRemote.hello(name);
        }
    }

添加完之后,重启springcloud-ribbon-consumer服务,然后依旧重复访问 http://localhost:9006//hello/pancm 该地址,
访问的结果如下:

pancm,Hello World!
pancm,Hello World! 这是另一个服务!
pancm,Hello World!
pancm,Hello World! 这是另一个服务!
pancm,Hello World!
pancm,Hello World! 这是另一个服务!
发布了87 篇原创文章 · 获赞 78 · 访问量 4047

猜你喜欢

转载自blog.csdn.net/weixin_45821812/article/details/104017252