心勤则明 2023-12-01 14:40 采纳率: 0%
浏览 43

OpenFeign使用HttpClient后,Feign响应GZIP压缩失效,求解

依赖版本

<properties>
  <java.version>8</java.version>
  <spring-boot-version>2.6.11</spring-boot-version>
  <spirng-cloud-version>2021.0.4</spirng-cloud-version>
  <spring-cloud-alibaba-version>2021.0.4.0</spring-cloud-alibaba-version>
</properties>

feign客户端依赖

<!--OpenFeign声明式HTTP客户端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <!--使用feign-httpclient依赖会导致feign原本的响应压缩失效-->
        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-httpclient</artifactId>
        </dependency>

Feign客户端配置

feign:
  sentinel:
    enabled: false
  httpclient:
    enabled: true
    # 最大连接数
    maxConnections: 200
    # 每个路径的最大连接数
    maxConnectionsPerRoute: 50
  # 数据压缩
  compression:
    request:
      enabled: true
      min-request-size: 1
      mime-types:
        - image/png
        - image/jpeg
        - image/jpg
        - text/html
        - application/javascript
        - text/css
        - application/octet-stream
        - application/json
        - text/plain
    response:
      enabled: true

Feign服务端配置

server:
  port: 8085
  compression:
    enabled: true
    mime-types:
      - image/png
      - image/jpeg
      - image/jpg
      - text/html
      - application/javascript
      - text/css
      - application/octet-stream
      - application/json
      - text/plain
    min-response-size: 10B

移除“feign-httpclient”依赖后,响应压缩正常,如下图:

img

未移除 “feign-httpclient”依赖,响应压缩失效,如下图:

img

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-12-01 18:10
    关注

    【以下回答由 GPT 生成】

    我将提供以下解决方案,来帮助您解决Feign响应GZIP压缩失效的问题:

    1. 首先,确认你使用的OpenFeign和HttpClient的版本。请提供相关依赖的版本号,以及相关的代码片段,包括Feign客户端配置。

    2. 需要确保你使用的OpenFeign和HttpClient的版本支持GZIP压缩功能。

    3. 确认你的请求头中包含了正确的Accept-Encoding字段,以告知服务器你支持GZIP压缩。以下是一个示例的Feign客户端配置类,你可以参考进行配置:

    @Configuration
    public class FeignConfiguration {
    
        @Bean
        public RequestInterceptor requestInterceptor() {
            return requestTemplate -> {
                requestTemplate.header("Accept-Encoding", "gzip");
            };
        }
    }
    
    1. 检查服务端是否正确地以GZIP格式压缩响应。你可以使用一些HTTP调试工具,如curl或Postman等,发送GET请求,检查响应头中是否包含Content-Encoding: gzip字段。

    2. 如果以上步骤都正确配置且响应仍然没有进行GZIP压缩,那可能是由于服务器端未正确配置GZIP压缩。在这种情况下,你需要联系服务器端的开发人员,并确保服务器端正确配置了GZIP压缩。

    如果你遇到了上述解决方案之外的问题,或者以上解决方案没有解决你的问题,请提供更多的详细信息,以便我更准确地帮助你解决问题。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 12月1日