Мне интересно, как правильно работать с asyn c сервисами (возвращает Future [OfResult]) внутри фоновых задач Play akka. В игровых документах нет информации об этом. Кажется, я не могу просто вернуть Future [TaskResult] в конце и выполнить действия реактивным способом, поэтому я использую Await.result для каждого вызова службы asyn c . И даже если я использую свой собственный контекст выполнения, иногда я получаю странные исключения из гладкого слоя db, и задача перестает работать, это совсем не устойчиво (я ожидал, что по крайней мере следующее расписание будет работать), поэтому я думаю, что делаю это неправильно.
Задача простая, у меня есть таблица событий в базе данных с некоторыми полями и диапазоном дат, каждый день я проверяю, находится ли текущая дата внутри диапазона дат, удаляю прошедшие события и активирую новые события. Это требует от меня:
- Получить все события - это список Future [Event]
- Пролистать список и изменить или удалить события
Я делаю это в процедурном стиле с блокировкой Await.result
При небольшом количестве событий он выходит из строя очень редко, но с тысячами - он выходит из строя довольно скоро (я полагаю, из-за ограниченного пула базы данных?)
Это не похоже на неправильную конфигурацию базы данных, потому что при обычном действии контроллера asyn c все работает нормально с огромным объемом данных, поэтому я полагаю, что делаю это неправильно