我有一个自定义HTTP连接器作为单独的spring bean。它正在调用返回视频流的远程服务器。 Connector获取输入参数和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 lib的实现将所有流存储在RAM中,因此不幸的是在文件上得到的OutOfMemoryError超过几兆兆字节的数据
是否可以直接将流转发给客户端而不进行处理,如:
ctx.setPayload(outputStream);
? 或者任何其他想法,以避免在Mule中流缓冲并将所有数据转发给客户端?
答案 0 :(得分:0)
这是一个非常简单的httpClient问题,而不是骡子问题。
我不建议Mule为你做的工作。尝试将该工作留给http:outbound-endpoint,它将为您处理流模式。
如果你真的需要性能,你也可以尝试新的Mule 3.6,它包含一个新的http连接器,它比httpclient中的旧连接器更高效。