赞
踩
feign是声明式的web service客户端,它让微服务之间的调用变得更简单了,类似controller调用service。Spring Cloud集成了Ribbon和Eureka,可在使用Feign时提供负载均衡的http客户端。原理可能很多,但是用起来其实并不是那么复杂。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
关键注解添加
调用接口添加
被调用方代码:
@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;
}
如何查看调用接口具体响应时长、路径、请求头等信息,好协助自己优化接口,看下面代码有详细说明:
@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})
@FeignClient(name = "github-client", url = "https://ip:port", allbackFactory = EurekaClientFallback.class, configuration = {FeignClientConfiguration.class})
至此,Feign服务集成完毕!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。