Um Ihre Frage zu beantworten,
Bin ich richtig davon ausgegangen, dass Beispiel zwei den Standard verwendet / blockiert Thread-Pool anstelle meines separaten Slick-Context-Thread-Pools? Wenn ja,
Ja, das würde den Standardpool verbrauchen / blockieren.
Wenn Sie den separaten %code% -Thread-Pool verwenden möchten, könnten Sie so etwas ausprobieren?
%Vor%%code% erwartet eine %code% (eine implizite wird es tun); alles, was Sie brauchen, um den zu überliefern, den Slick (implizit) benutzt:
%Vor%Ich habe eine Play 2.2.1-App, die play-slick 0.5.0.8 verwendet, um Daten in einem Postgresql-Backend zu speichern und SecureSocial 2.1.2 , um die Benutzerautorisierung durchzuführen.
Da Play-Slick-Transaktionen blockiert werden, habe ich einen separaten %code% Ausführungskontext in meiner %code% -Datei erstellt, wie in der Anweisungen im Wiki des Plugins gefunden :
%Vor%Dadurch kann ich eine Controller-Aktion erstellen, die in einem separaten Ausführungskontext ausgeführt wird und Threads im Standard-Thread-Pool nicht blockiert. Z.B. %code% :
Beispiel 1 - Verwenden von play-slicks DBAction:
%Vor%Für bestimmte Controller-Aktionen möchte ich die SecureSocial-Aktionen ( %code% , %code% usw.) in Verbindung mit play-slicks %code% nutzen können. Was ist der beste Weg, um die beiden zu kombinieren?
Mir ist klar, dass ich etwas wie das Folgende tun kann, aber ich verstehe, dass der DB-Aufruf nicht mein separates %code% verwendet und daher den Standard-Thread-Pool blockiert:
Beispiel 2 - Verwenden der SecureSocial-Aktion:
%Vor%Bin ich richtig davon ausgegangen, dass Beispiel zwei den Standard-Thread-Pool anstelle meines separaten %code% -Thread-Pools verwendet / blockiert? Wenn ja, gibt es eine Möglichkeit, dies zu ändern?
Ich könnte das offensichtlich umgehen, indem ich den standardmäßigen Thread-Pool von Play stoße ( %code% ), aber im Idealfall möchte ich den Standard-Thread-Pool ziemlich schlank halten und alle blockierenden DB-Aufrufe in einem separaten Pool ausführen.
Hilfe geschätzt!