springCloud 使用Feign访问其他应用

首先在调用方增加依赖

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

在起动主类上加注解  @EnableFeignClients

定义要调用的接口

package com.imooc.order.client;

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

//注解表示访问product应用,下的不同方法如msg接口
@FeignClient(name = "product")
public interface ProductClient {
    @GetMapping("/msg")
    String productMsg();
}

Controller调用刚定义的接口访问其他应用

package com.imooc.order.controller;

import com.imooc.order.client.ProductClient;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
@Slf4j

public class ClientFeignTestController {

    @Autowired
    private ProductClient productClient;

    @GetMapping("/getProductMsg4")
    public String getProductMsg4(){
        ////第四种方式使用Feign
        String response = productClient.productMsg();
        log.info(response);
        return response;
    }

}

但测试的结果,开始配置的随机规则失效了,又变为了默认的轮循规则

Feign内部也是用的Ribbon做的负载均衡。只是在 ribbon基础上作了封装

发布了283 篇原创文章 · 获赞 11 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/liuming690452074/article/details/104519338