Как правильно создать asyn c REST API с записью в базу данных? - PullRequest
0 голосов
/ 21 марта 2020

У меня есть REST API с синхронными конечными точками, что означает:

  1. запрос приходит
  2. код выполняется
  3. результат записывается в postgresDB с использованием hibernate (с hikariCP)
  4. результат возвращается в ответе http

Это может занять много времени, поэтому я хотел вместо этого сделать REST API асинхронным:

  1. приходит запрос POST
  2. запрос записывается в БД
  3. возвращается ответ OK
  4. мой код выполняется и записывает результат DB
  5. приходит запрос GET, чтобы получить результат для
  6. , если результат для этого запроса находится в БД, вернуть его в ответе http

Я начал с того, что сделал это наивным способом, просто запустив новый поток для моего кода (и вернув ответ OK), который также пытается записать результат в БД, но я получаю failed to lazily initialize a collection of role: online.ecm.API.model.Document.requestResponses, could not initialize proxy - no Session в этом и я прочитал, что вы должны избегать возиться с Hiber nate.current_session_context_class .

Мне было трудно понять, как добавить записи в БД, когда я смотрел на различные примеры для "Spring Asyn c REST API", и я не был уверен, какой из способов это Я видел, все еще актуально и лучше всего подходит для моего случая. Кто-нибудь может указать мне пример или написать пример такого asyn c REST API с базой данных весной? Я не смог найти подходящего или четкого ответа на эту проблему, хотя мне это кажется общей архитектурой.

...