/ / AkkaのデフォルトシステムはいつPlayで使えるの? - akka、playframework-2.3

AkkaのデフォルトシステムはいつPlayで利用可能になりますか - akka、playframework-2.3

私はPlay 2.3.7でアプリケーションを書いていて、アクターを作成しようとしたとき(デフォルトを使って) Akka.system() の中) beforeStart のオーバーライドされたメソッド Global オブジェクト、アプリケーションはいくつかの無限の再帰呼び出しでクラッシュします beforeStart、最終的にのために例外をスローします Global オブジェクトは初期化されていません。このアクターを内部に作成すると onStart 方法は、その後、すべてがうまくいきます。

私の「直感」は次のとおりです。 「このアクターはアプリケーションが最初のリクエストを受け取る前に準備ができている必要があります beforeStart、 ありませんで onStart".

時である Akka.system() 使用する準備ができて?

回答:

回答№1は2

Akka.system 返す ActorSystem によって開催された AkkaPlugin。したがって、あなたがそれを使いたいのであれば、あなたはそれをしなければならない。 AkkaPlugin 初期化されました。の AkkaPlugin これは他のほとんどの内部プラグイン(データベース、進化など)の後に開始されることを意味します。の Global プラグインの優先順位は10000です。 AkkaPlugin そこで利用可能です(そして優先度> 1000を持つすべてのプラグインのために)。

に関するドキュメントの警告に注意してください。 beforeStart

アプリケーションが起動する前に呼び出されます。

データベース接続など、プラグインによって管理されているリソースは、現時点では利用できない可能性があります。


回答№2については2

あなたはこれを始めなければなりません onStart() なぜなら beforeStart() Akka(これは実際にはプラグインです)やデータベース接続が作成される前の早い時期に呼び出されます実際には、 のドキュメント GlobalSettings

データベース接続など、プラグインによって管理されているリソースは、現時点では利用できない可能性があります。

一般的なガイダンス(このスレッドで確認)それは onStart() アクターを作成する場所です。そして実際には、それは私にとってもうまくいった。