spring-cloud-netflix: Feign can never compress request/response.
It seems that the feign’s compression won’t work. My version is Spring Cloud Camden SR3.
Here goes my configuration.
application.properties
feign.compression.response.enabled=true
feign.compression.request.enabled=true
feign.compression.request.mime-types=text/xml,application/xml,application/json
feign.compression.request.min-request-size=2048
I found the compression won’t work. When I debuged the feign service, I found that the code can never be loaded. like the pic below.
Then I go into the code, in spring-cloud-netflix-core
@Configuration
@EnableConfigurationProperties(FeignClientEncodingProperties.class)
@ConditionalOnClass(Feign.class)
@ConditionalOnBean(ApacheHttpClient.class)
@ConditionalOnProperty(value = "feign.compression.request.enabled", matchIfMissing = false)
@AutoConfigureBefore(FeignAutoConfiguration.class)
public class FeignContentGzipEncodingAutoConfiguration {
@Bean
public FeignContentGzipEncodingInterceptor feignContentGzipEncodingInterceptor(FeignClientEncodingProperties properties) {
return new FeignContentGzipEncodingInterceptor(properties);
}
}
In this line:
@ConditionalOnBean(ApacheHttpClient.class)
this class ApacheHttpClient, is in the jar feign-httpclient
.
but the dependency is even not in the classpath. Here goes my POM.XML
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
</dependencies>
<!-- 引入spring cloud的依赖 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Camden.SR3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
So, I added the denpency mannally.
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
</dependency>
BUT even I did this, Feign’s compression can never work.
My Question
- What’s wrong?
- Is it a bug?
- feign.compression.request.min-request-size=2048 Does it mean 2048 byte?
About this issue
- Original URL
- State: closed
- Created 8 years ago
- Comments: 22 (15 by maintainers)
Hi, Yes the request compression is working for us with these changes. Thanks!