Java 如何在Camel中通过HTTP下载大文件而不耗尽内存
我正在使用ApacheCamel和SpringBoot制作一种api网关,以定义到网络上不同服务的路由。但是,我有一个从服务器下载大文件(100mb~500mb)的服务的路由问题。似乎文件总是完全加载到内存中,如果多人同时调用它,就会出现内存异常 路线定义如下: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
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,启用或禁用流缓存,但不管发生什么,它都会将整个文件加载到内存中,而不是仅仅发送到客户端
我希望你们中的一位能帮我解决这个问题。设置参数时会发生什么?设置参数时会发生什么?