【发布时间】:2015-03-20 00:20:20
【问题描述】:
我有一个自定义 HTTP 连接器作为单独的 spring bean。它正在调用返回视频流的远程服务器。连接器获取输入参数和 baseURL 的消息对象:
public class MediaArchiveHttpConnector {
public void processHttpRequest(Object message, String baseURL)
throws IOException {
...
MessageContext ctx = (MessageContext) message;
...
现在我正在使用 Apache HttpClient lib 调用远程端点:
...
response = httpclient.execute(httpRequest);
HttpEntity entity = response.getEntity();
...
ctx.setPayload(EntityUtils.toByteArray(entity));
不幸的是,由于 Apache HttpClient 库的实现将所有流存储在 RAM 中,所以文件超过数百兆字节时会出现 OutOfMemoryError
是否可以直接将流转发到客户端而不进行处理:
ctx.setPayload(outputStream);
? 或者有什么其他想法可以避免 Mule 内部的流缓冲并将所有数据转发给客户端?
【问题讨论】: