微服务系列之-Feign服务集成

一.介绍

feign是声明式的web service客户端,它让微服务之间的调用变得更简单了,类似controller调用service。Spring Cloud集成了Ribbon和Eureka,可在使用Feign时提供负载均衡的http客户端。原理可能很多,但是用起来其实并不是那么复杂。

二.集成操作

  1. 依赖添加
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
  1. 关键注解添加
    在这里插入图片描述

  2. 调用接口添加
    在这里插入图片描述被调用方代码:

@Slf4j
@RestController
@RequestMapping(value = "/eureka-client/feign")
public class FeignEurekaController
{
    /**
     * feign调用信息获取
     *
     * @return
     * @exception
     * @date        2020/5/7 10:17
     */
    @GetMapping(value = "/info")
    public ResultVO<?> feignInfo()
    {
        log.info("FeignController|feignInfo|通过FEIGN调用方式获取数据");
        return new ResultVO<>("200", "SUCCESS");
    }
}

调用方代码:

public ResultVO<?> feignInfo()
    {
        log.info("EurekaClientService|feignInfo|信息获取");
        ResultVO<?> resultVO = this.eurekaClientFeign.feignInfo();
        log.info("EurekaClientService|feignInfo|信息获取|请求出参:={}", resultVO);
        return resultVO;
    }
  1. 调用结果
    在这里插入图片描述
    成功调用到被调用方服务!!!

三.补充

如何查看调用接口具体响应时长、路径、请求头等信息,好协助自己优化接口,看下面代码有详细说明:

@Configuration
public class FeignClientConfiguration
{
    /**
     *   Logger.Level 的具体级别如下:
     *          NONE:不记录任何信息
     *          BASIC:仅记录请求方法、URL以及响应状态码和执行时间
     *          HEADERS:除了记录 BASIC级别的信息外,还会记录请求和响应的头信息
     *          FULL:记录所有请求与响应的明细,包括头信息、请求体、元数据
     */
    @Bean
    feign.Logger.Level feignLoggerLevel()
    {
        return feign.Logger.Level.FULL;
    }
}

Feign的调用方式我目前用到两种:

  • 一种是“服务名调用”
@FeignClient(value="qyeurekaclient", fallbackFactory = EurekaClientFallback.class, configuration = {FeignClientConfiguration.class})
  • 第二种“Url路径调用”
@FeignClient(name = "github-client", url = "https://ip:port", allbackFactory = EurekaClientFallback.class, configuration = {FeignClientConfiguration.class})

至此,Feign服务集成完毕!!!

微服务项目:微服务集成项目

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章