У меня есть пользовательский коннектор HTTP как отдельный весенний боб. Он вызывает удаленный сервер, который возвращает видеопотоки. Соединитель получает объект сообщения для входных параметров и BaseUrl:Mule ESB устанавливает OutputStream в MessageContext как полезную нагрузку
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));
И Unfortunatelly получить OutOfMemoryError на файлах больше, чем несколько hundreads мегабайта, потому что реализация Apache HttpClient lib хранит весь поток в оперативной памяти
Возможно ли пересылать поток непосредственно клиенту без его обработки:
ctx.setPayload(outputStream);
? Или любые другие идеи, чтобы избежать буферизации потока внутри Mule и перенаправить все данные клиенту?
Thx. Я написал собственный http-коннектор, потому что mule http connector не поддерживает прозрачную работу с куки-файлами и заголовками, сеансами и несколькими пользователями. Это очень важно для меня. –
Для большинства, если не всех из них, Mule может обрабатывать файлы cookie, заголовки, сенсоры и auth. Возможно, вы можете решить свои проблемы в разных вопросах. –