Java 如何在Camel中通过HTTP下载大文件而不耗尽内存

Java 如何在Camel中通过HTTP下载大文件而不耗尽内存,java,spring-boot,rest,download,apache-camel,Java,Spring Boot,Rest,Download,Apache Camel,我正在使用ApacheCamel和SpringBoot制作一种api网关,以定义到网络上不同服务的路由。但是,我有一个从服务器下载大文件(100mb~500mb)的服务的路由问题。似乎文件总是完全加载到内存中,如果多人同时调用它,就会出现内存异常 路线定义如下: restConfiguration() .component("undertow") .host("0.0.0.0") .port("{{api.port}}&q

我正在使用ApacheCamel和SpringBoot制作一种api网关,以定义到网络上不同服务的路由。但是,我有一个从服务器下载大文件(100mb~500mb)的服务的路由问题。似乎文件总是完全加载到内存中,如果多人同时调用它,就会出现内存异常

路线定义如下:

restConfiguration()
    .component("undertow")
    .host("0.0.0.0")
    .port("{{api.port}}")
    .contextPath("/api");

rest("/download")
    .get("/{fileId}")
    .route()
    .setHeader(Exchange.HTTP_PATH, constant("/download"))
    .setHeader(Exchange.HTTP_QUERY, simple("fileid=${header.fileId}"))
    .toD("{{download-service.url}}?bridgeEndpoint=true&throwExceptionOnFailure=false");
我一直在试图找到一种方法来避免它在调用/download/时出现OutOfMemory异常,方法是尝试netty和jetty,而不是undertow,启用或禁用流缓存,但不管发生什么,它都会将整个文件加载到内存中,而不是仅仅发送到客户端


我希望你们中的一位能帮我解决这个问题。

设置参数时会发生什么?设置参数时会发生什么?