問題タブ [akka-actor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
akka - Akka System Guardian のカスタム スーパーバイザー戦略
System Guardianの Akka docs によると、最上位のアクターが をスローするException
と、無期限に再起動されます (2 つの例外があります - しゃれは意図されていません)。
私のアクター システムには、トップレベルのアクターが 1 つだけあります: Initializer
. 例外がスローされた場合、可能であればInitializer
、別の例外を適用したいと思います。SuervisorStrategy
Initializer
3回まで再起動- それが機能しない場合は、停止/終了します
システム ガーディアンにこのカスタム戦略を実装するにはどうすればよいですか?
scala - 関連するアクタがスーパーバイザによって再起動されると、ActorRef は更新されますか?
ロギング アクターをそのように作成すると、
ロガーが例外のために再起動すると、ロガーはディスクへの書き込みを停止します。
メッセージを送っていたlogger ! msg
スーパーバイザーが私のロギング アクターを再起動したときに ActorRef が更新されなかったと仮定するのは正しいですか?
scala - 具体的なアクターの val として Supervisorstrategy をオーバーライドする
ScalaのActor
trait は次のように定義されています。
ただし、具体的なアクターのすべてのサンプルコードは次のように定義されていることがわかります。
私が理解しようとしているのは、なぜ supervisorStrategy
オーバーライドされているのval
ですか?
としてオーバーライドしてみませんdef
か?
メソッドが呼び出されるたびにこの評価が必要ないように、メモリの考慮事項のためですか?
scala - Akka Actor をいつ作成するか
POST リクエストを 1 つだけ処理する REST サービスがあります。アクターを使用してリクエストを処理したいと考えています。ただし、1 つのアクターを作成し、このアクターを使用してすべてのリクエストを取得する必要があるのか、それともリクエストを受け取るたびにアクターを作成する必要があるのか わかりません。これらの選択の長所と短所は何ですか。また、1 つのアクターを作成し、そのアクターを使用してすべてのリクエストを処理すると、並列実行はどのようになりますか。確かに順次実行のように見えます。これも理解しておきたい。
scala - 可変サイズの Thread-Pool-Executor を備えた Akka Balancing Pool
これが私のユースケースです:
サイズ x (x は実行時に決定されるインスタンス/ルートの数) の Balancing-Pool ルーターを作成し、各ルートに独自の専用スレッドを持たせたいと考えています。各ルートはブロッキング操作を実行することが期待されています。
Akka のドキュメントでは、バランシング プールのディスパッチャーを変更できないと説明されています。これにより、Pinned Dispatcher を使用するオプションがなくなります (ルートごとにサイズ 1 のスレッドプールが必要です)。
Akka のドキュメントから:
BalancingPool は、そのルートに特別な BalancingDispatcher を自動的に使用します。ルートの Props オブジェクトに設定されているディスパッチャーは無視されます。これは、すべてのルートで同じメールボックスを共有することによってバランシング セマンティクスを実装するために必要です。
ルートで使用されるディスパッチャーを変更することはできませんが、使用されるエグゼキューターを微調整することは可能です。デフォルトではfork-join-dispatcherが使用され、Dispatchers で説明されているように構成できます[AJ: これはタイプミスであり、fork-join-executor を意味します]。ルートがブロッキング操作を実行することが予想される状況では、割り当てられたスレッドの数を明示的に示唆するスレッドプールエグゼキュータに置き換えると便利な場合があります
Akka docs からの設定サンプルも:
ルートの数に一致するプール サイズを持つスレッドプール エグゼキューターが機能するように見えますが、ここに問題があります。構成でプールサイズを明示的に設定する必要がありますか?
また、構成からルートのエグゼキューターをプルしながら、(コードで) Balancing-Pool を作成することは可能ですか? つまり、構成を使用してルーターを定義したくありません。使用したいのは次のとおりです。
ただし、 withMailbox() または withDispatcher() の同じスタイルを使用して、使用するエグゼキューターを (構成から) どういうわけか指定します
Balancing Dispatcher は "Driven by: java.util.concurrent.ExecutorService"であるため、ExecutorService を作成して、balancing-pool ルーターまたはそのディスパッチャーに渡すことはできますか?
playframework - Play フレームワーク 2.5.x で「Clock」Akka Actor システムを作成するには?
それは単なる解決策の問題です。Play Framework で一定の時間間隔で繰り返すアクターの作成に成功しましたが、たとえば「12 時間」など、日付の決まった時間に活動できるアクターを作成したいと考えています。
私の最初の解決策は、イン プロセッサを追加し、Calendar object
アクターがアクティブになるたびに時間をチェックすることです。時間がセットアップ時間と等しい場合は、コードを実行してください。それは可能な解決策だと思いますが、良い解決策ではありません。Calendar オブジェクトが何度も作成されており、作成回数をCalendar object
できる限り減らしたいと考えています。
Origin Document: https://www.playframework.com/documentation/2.5.x/JavaAkkaおよび SOF のその他のトピックで他のソリューションを見つけましたが、私には合いません。
誰でも私がそれを解決するのを手伝ってくれますか?