Feign 填坑之路

摸索了两天的Feign,总结一下遇到的坑:

1、开启@EnableFeignClients

2、Feign配置

@FeignClient(name = "ai-help")
public interface AiHelpFeignService {
	
	@RequestMapping(value = "/ai/help", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
	public @ResponseBody String boxHelp(@RequestBody String str);
}

发送POST Json数据时要加consumes = MediaType.APPLICATION_JSON_VALUE,否则服务器可能接收错误。

3、Feign默认的网络请求框架为HttpURLConnection,我请求python写的接口时,对方一直报错。在pom中作一下配置:


    com.netflix.feign
    feign-httpclient
    RELEASE

使用HttpClient之后终于正常了。猜测可能是HttpURLConnection底层做的json封装与对方的json转换不兼容造成的。注:feign.httpclient.enabled属性不用配置,默认的就是true。

4、一切OK之后测试性能,结果感人。直接调业务接口在500的并发情况下,响应平均是300ms。经过cloud的转发,响应很多错误,发现是hystrix的线程限制原因,为了测试,简单粗暴的把hystrix功能关掉:feign.hystrix.enabled: false。测试的平均响应达到800+ms。依然是一个不能接受的结果。查了一系列资料之后,将3中的配置换成:


    com.netflix.feign
    feign-okhttp
    RELEASE

然后继续测试,平均响应在450ms左右,结果总算能接受了。第一次注意到原来这些网络库性能差别这么大。
 

你可能感兴趣的:(springcloud)