У меня есть REST API с синхронными конечными точками, что означает:
- запрос приходит
- код выполняется
- результат записывается в postgresDB с использованием hibernate (с hikariCP)
- результат возвращается в ответе http
Это может занять много времени, поэтому я хотел вместо этого сделать REST API асинхронным:
- приходит запрос POST
- запрос записывается в БД
- возвращается ответ OK
- мой код выполняется и записывает результат DB
- приходит запрос GET, чтобы получить результат для
- , если результат для этого запроса находится в БД, вернуть его в ответе 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 с базой данных весной? Я не смог найти подходящего или четкого ответа на эту проблему, хотя мне это кажется общей архитектурой.