在项目中集成feign踩了好多坑,特此记录一下
如题:
百度搜到好多解决方案,没一个是对的!
解决方案:
1.检查注解以及添加日志
消费者服务:添加@EnableFeignClients注解,pom
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.配置项
这里的name指定的是实例名:
@FeignClient(name = "eshop-server", configuration = FeignConfiguration.class)
@Service
public interface BannerFeignClient {
@RequestLine("GET /picchealth/eshop/bannerser/list")
Object list();
}
这里我加了日志打印:
@Configuration
public class FeignConfiguration {
/**
* 将契约改为feign原生的默认契约。这样就可以使用feign自带的注解了。
* @return 默认的feign契约
*/
@Bean
public Contract feignContract() {
return new Contract.Default();
}
@Bean
Logger.Level feignLoggerlevel(){
return Logger.Level.FULL;
}
}
3.配置日志输出(很重要)
logging:
level:
com.XXX.feign.BannerFeignClient: debug
4.启用okhttp
feign:
okhttp:
enabled: true
5.数据压缩
开启默认的OpenFeign数据压缩功能
如果你在服务间单词传递数据超过1k字节,强烈推荐开启数据压缩功能
feign:
okhttp:
enabled: true
compression:
#开启请求数据的压缩功能
request:
enabled: true
#压缩支持的MIME类型
mime-types: text/xml,application/xml,application/json
#数据压缩下限 1024 表示传输数据大于1024才会进行数据压缩(最小压缩值标准)
min-request-size: 1024
#开启响应数据的压缩功能
response:
enabled: true
最后一步:
一定要看编译环境是否把类和实体编译过来,我就是没看,即使多次clean,package也没用!这个绝对是idea或者系统bug