我的http响应太大而无法保留在内存中。如何在Camel路由中传输响应?

时间:2016-06-23 07:15:18

标签: rest apache-camel bytearrayoutputstream

我们正在实施Camel路由来处理服务请求。 我们要求对特定请求做出巨大响应。这种反应可能很大,可能会导致内存问题。 现在我们将响应写入文件,将该文件移动到外部ftp服务器,并将文件的名称和位置作为http响应返回。 我真正想做的是通过Camel中的http响应流式传输响应。不幸的是,我找不到任何关于如何做的文档/样本。

这是我们目前的实施:

.rest(BASE_URL_VERSION)
.get("/generic/xxxxxx").produces(MIME_MEDIA_TYPE_JSON)
.route()
.process(new ResponseBuilderProcessor())  // this creates the temp file
.to(uriOut)                               // this moves the file to the external ftp
.process(new AnswerProcessor());         // provides the response where the file location is mentioned

这可行吗?怎么样?

1 个答案:

答案 0 :(得分:0)

考虑让您的服务异步

如果请求正确,请将请求视为已接受(http 202)&向客户端提供响应可用性的详细信息(可能在您提到的JMS队列或文件位置)。队列ID或文件位置可以作为响应发送。

客户端将在一段时间间隔后点击队列或文件位置。获得响应,如果它可用。