Как построить асинхронную загрузку данных с простой настройкой - PullRequest
1 голос
/ 20 февраля 2020

У меня есть процесс в моем веб-приложении, это просто последовательность запросов CRUD. Порядок, как правило, строгий, с той лишь разницей, что идентификатор будет отличаться для каждого процесса. Я хотел бы сделать «асинхронную» загрузку данных. Например:

  1. Пользователь делает запрос для шага 1.
  2. Сервер дает ему / ей ответ и, как только сервер создает полный ответ, он начинает собирать данные для Шаг 2, 3, 5 ... и поместите его в кеш.

Мой вопрос: не могли бы вы порекомендовать какой-нибудь механизм, который сделает его простым и читабельным? Это главное требование. Есть ли у Spring что-то для этого? (WebFlux не очень подходит для архитектуры)

1 Ответ

1 голос
/ 21 февраля 2020

Я думаю, что вы можете использовать producer-consumer design pattern

Например.
1. Получить запрос от клиента, выполнить шаг 1.
2. Ответ клиента.
3. Сделайте task entity, затем добавьте его к task queue.
4. Конец рабочего потока Http.
5. Выполните шаг 2-N в другом потоке. И поместите результаты в кеш.

Для фреймворков, akka - хороший выбор. RxJava тоже может быть хорошо.

И вы можете реализовать это самостоятельно.

...