2016-05-02 16 views
0

私は、いくつかの子アクタを作成する管理者アクタを持っています。私は私が子供を再起動する前の5秒を言わせてのためにしたいように、私は、この再起動にタイムアウトを導入できるか知りたいのですがアクカアクタは時間の経過後に再起動します

override val supervisorStrategy = 
    OneForOneStrategy() { 
     case _ => 
     logger.info("doing restart") 
     Restart 
    } 

:私もOneToOne処理を行い監督の戦略を定義していますか?設定可能なタイムアウトを私に指摘するAkkaのドキュメントはありません。すべての手がかりは?私はThread.sleep(...)を望んでいません。それは間違いなく式の外です。その他の提案はありますか?

答えて

1

どのようなパラメータでOneForOneStrategyを上書きについて:

OneForOneStrategy(maxNrOfRetries = 6, withinTimeRange = 1.minute) { 
    ... 
    ... 
} 

この子役が1分のスパン内のみ6回再起動されることを確実にするでしょう!

+0

これは、時間間隔で子をN回再起動しようとします。これらの試行が行われる間隔は定義されておらず、また最初の試行の前に経過する間隔も定義されていません。 – nattyddubbs

0

backoff supervisorは、最小バックオフと最大バックオフが互いに等しいように構成できます。

バックオフインスタンスには2種類の異なる種類があります。 1つはonStop、もう1つはonFailureです。あなたのケースでは、onFailureを使用します。これは、例外ケースを処理するように設定されているスーパーバイザーであるためです。

+0

BackoffSupervisorは、遅延が増加する子を再起動します。私はそれが必要ではないかもしれません!どのようにOneForOneStrategyにmaxNrOfRetriesとwithinTimeRangeパラメータをオーバーライドするのですか?これはまさに私が欲しいものです! – sparkr

+0

これはすべて設定に基づいています。最小バックオフと最大バックオフが両方とも同じであると設定すると、その時間を待ってから、子を再起動しようとします。 – nattyddubbs

関連する問題