2016-06-23 1 views
0

Мы реализуем маршруты верблюдов для обработки запросов на обслуживание. У нас есть требование предоставить огромный ответ на определенный запрос. Этот ответ может быть настолько большим, что может вызвать проблемы с памятью. Теперь напишем ответ в файле, переместите этот файл на внешний ftp-сервер и вернем имя и расположение файла в качестве ответа HTTP. Что мне действительно нравится делать, так это передать ответ через ответ http в Camel. К сожалению, я не смог найти какие-либо документы/образцы о том, как это сделать.Мой ответ HTTP слишком велик, чтобы хранить в памяти. Как я могу передать ответ на маршрут Camel?

Это наша текущая реализация:

.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 

Является ли это выполнимо? Как?

ответ

0

Рассмотрим сделать ваш асинхронной службы

Если запрос является правильным сделать запрос, как принято (HTTP 202) & предоставить клиенту подробную информацию о наличии réponse (может быть в очереди JMS или местоположение файла, как вы). Идентификатор очереди или местоположение файла можно отправить как ответ.

Клиент попадает в очередь или местоположение файла после промежутка времени & получает ответ, если он доступен.

Смежные вопросы