You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加quarkus-amazon-lambda-http后Quarkus REST API响应异常挂起

Quarkus大响应体返回异常(引入quarkus-amazon-lambda-http后)

问题现象

  • 未引入quarkus-amazon-lambda-http依赖时,GET端点可正常返回10000+条数据的大响应
  • 添加该依赖后,响应大小被严格限制:返回50条数据正常,100条则失效
  • 本地运行时,接口返回200 OK但无响应体,客户端(Postman、浏览器、curl)会无限挂起等待

已尝试操作:

  • 切换响应式/非响应式依赖组合
  • 更换Quarkus版本(如3.6.0),问题依旧

相关代码

资源类(ExampleResource.java)

import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Path("/cars")
public class ExampleResource {

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Car> cars() {
        List<Car> carList = new ArrayList<>();

        // 仅50条数据时正常;无lambda依赖时10000+条也正常
        for (int i = 0; i < 100; i++) {
            carList.add(new Car(Long.valueOf(i), "Car(" + i + ")", Double.valueOf(i) * 100, Double.valueOf(i) + 100,
                    Double.valueOf(i), new Date(), new Date()));
        }

        return carList;
    }
}

模型类(Car.java)

import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.Date;

@Data
@AllArgsConstructor
public class Car {
    private Long id;
    private String name;
    private Double weight;
    private Double length;
    private Double width;
    private Date dateBuilt;
    private Date dateAdded;
}

pom.xml配置

<properties>
    <compiler-plugin.version>3.11.0</compiler-plugin.version>
    <maven.compiler.release>17</maven.compiler.release>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <quarkus.platform.artifact-id>quarkus-bom</quarkus-platform.artifact-id>
    <quarkus.platform.group-id>io.quarkus.platform</quarkus.platform.group-id>
    <quarkus.platform.version>3.6.4</quarkus.platform.version>
    <skipITs>true</skipITs>
    <surefire-plugin.version>3.1.2</surefire-plugin.version>
</properties>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>${quarkus.platform.group-id}</groupId>
            <artifactId>${quarkus.platform.artifact-id}</artifactId>
            <version>${quarkus.platform.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-arc</artifactId>
    </dependency>
    <dependency>
        <groupId>io.rest-assured</groupId>
        <artifactId>rest-assured</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.30</version>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-resteasy-reactive-jackson</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-resteasy-reactive-jsonb</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-amazon-lambda-http</artifactId>
    </dependency>
</dependencies>

解决方案

1. 移除重复JSON序列化依赖

pom.xml中同时引入了quarkus-resteasy-reactive-jackson和quarkus-resteasy-reactive-jsonb,二者会导致序列化逻辑冲突,保留其中一个即可。推荐移除quarkus-resteasy-reactive-jsonb:

<!-- 移除该冲突依赖 -->
<!--
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-resteasy-reactive-jsonb</artifactId>
</dependency>
-->

2. 增大Lambda HTTP响应缓冲区

在application.properties中添加配置,调整响应缓冲区大小(根据实际响应体量设置,示例为10MB):

quarkus.amazon-lambda.http.response-buffer-size=10485760

3. 排查本地运行日志

若本地运行仍有挂起问题,开启DEBUG日志排查序列化异常:

quarkus.log.category."io.quarkus.amazon.lambda.http".level=DEBUG
quarkus.log.category."io.quarkus.resteasy.reactive".level=DEBUG

原理说明

引入quarkus-amazon-lambda-http后,Quarkus切换为Lambda HTTP适配层处理请求响应,该适配层默认缓冲区较小;同时多个JSON序列化依赖会引发逻辑冲突,最终导致大响应体无法正常输出。

内容的提问来源于stack exchange,提问作者Stan Ostrovskii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 00:11:07