play-slick

___ tag123scala ___ Scala ist eine universelle Programmiersprache, die hauptsächlich auf die Java Virtual Machine abzielt. Entwickelt, um gängige Programmiermuster in einer prägnanten, eleganten und typsicheren Weise auszudrücken, vereint es sowohl imperative als auch funktionale Programmierstile. Seine Hauptmerkmale sind: fortgeschrittenes statisches System mit Typinferenz; Funktionstypen; Muster-Matching; implizite Parameter und Konvertierungen; Überlastung des Bedieners; volle Interoperabilität mit Java; Nebenläufigkeit ___ tag123playframework22 ___ Play basiert auf einer leichtgewichtigen, zustandslosen, webfreundlichen Architektur und zeichnet sich durch vorhersehbaren und minimalen Ressourcenverbrauch (CPU, Speicher, Threads) für hochskalierbare Anwendungen aus. ___ tag123playframework ___ Play Framework ist ein modernes Open-Source-Web-Framework für Java und Scala. ___ answer19781063 ___

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%     
___ tag123securesocial ___ Ein Authentifizierungsmodul für Play Framework-Anwendungen, die OAuth, OAuth2, OpenID, Benutzername / Passwort und benutzerdefinierte Authentifizierungsschemata unterstützen. ___ qstntxt ___

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!

    
___ tag123playlick ___ Ein Plugin, das Slick zu einem erstklassigen Bürger von Play 2.x macht. ___ qstnhdr ___ Play-Slick mit SecureSocial: DB IO in einem separaten Thread-Pool ausführen ___
1
Antwort

Play-Slick mit SecureSocial: DB IO in einem separaten Thread-Pool ausführen

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 e...
05.11.2013, 01:37