Chcę nawiązać połączenie z bazą danych, która ma dużo danych i może trochę potrwać.Play & Akka i wątki blokujące dostęp do bazy danych
Planuję wykonać tę pracę w ramach połączenia z Akka.future (f) i użyć Asynchronicznej {}, aby wyświetlić odpowiedź po zakończeniu pracy.
Czy ma to sens, czy powinienem po prostu wykonać długie wywołanie bazy danych w kontrolerze, bez wysyłania pracy do Akki?
Czy istnieje sposób na niezablokowanie dostępu do bazy danych?
Bloki wywołania DB i nie mam żadnych innych zadań do wykonania dla tego żądania przychodzącego. Ale sam serwer Play może obsłużyć inne żądanie przychodzące w międzyczasie. Ale jeśli wyślę pracę do Akka.future (praca), to obsłużę ją tymi samymi wątkami, które poradzą sobie z nowymi przychodzącymi prośbami, więc nie sądzę, żeby to miało jakiś wpływ, przekazując ją tak Akka. W rzeczywistości może nawet powodować dodatkowe obciążenie. Czy to ma sens? –
Tak, myślę, że to ma sens. Zakładając blokowanie IO w wywołaniu bazy danych, będzie zajmować wątek, dopóki nie zostanie ukończony. Nie wiem, dobrze się gra, ale nie powinno to przeszkadzać rozsądnym stronom internetowym w obsłudze dodatkowych wniosków. Inne wątki można zaplanować na procesorze podczas oczekiwania na pakiety z serwera DB, tak jak w przypadku każdej innej aplikacji, a Play powinien mieć dostęp do puli wątków. Zaakceptuj odpowiedź, jeśli ma to sens. =) – spieden