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. 1

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)

Most upvoted comments

Hi, Yes the request compression is working for us with these changes. Thanks!