Я ищу идеи о том, как справиться с задачей, связанной с поиском, которая занимает больше обычного времени (в человеческом выражении более 3 секунд)
Мне нужно запросить несколько источников, сначала просмотреть информацию, а затем кэшировать ее в БД для последующего быстрого возврата.
Контекст проекта - J2EE, Spring и Hibernate (поверх SpringROO)
Возможные решения, которые я мог придумать
-На веб-странице сообщите пользователю, что задание выполняется в фоновом режиме, если возможно, укажите ему номер очереди или время ожидания. Обновите страницу через контроллер, который в основном проверяет, выполнена ли задача, затем, когда она выполнена (то есть результат поиска подготовлен и сохранен в БД), затем просто перенаправьте на новый контроллер и извлеките результат из БД
- Фоновые задачи могут быть выполнены с помощью Spring Task executor. Я не уверен, легко ли определить, сколько времени это займет. Вероятно, было бы плохой идеей разрешить одновременное выполнение всех поисковых терминов, поэтому неплохо было бы использовать какое-то объединение.
-Другим вариантом использования фоновых задач является использование JMS. Возможно, это решение с большим контролем (повторные попытки и т. Д.)
-Пружина также приходит на ум
Пожалуйста, предложите, как бы вы это сделали. Я был бы очень признателен за подробное описание. Источниками информации могут быть люди и они могут быть последовательными по своей природе, поэтому для формирования результатов может потребоваться до 4-5 минут. Также возможно, что такие задачи выполняются автоматически в фоновом режиме без вмешательства пользователя (т.е. для обновления из источников)