アッカに電話
- 111
- 222
- 222
- 22
- 111
- 111
12222
アッカに電話
重要な概念
ActorSystem
AbstracActor
ActorRef
createRecive()
tell()
Patterns.ask()
-
動的なアクターの作成
- Javaでは、タスクがタスクを作成できることがわかります
- akka javaでは、アクターはアクターを作成することもできます
- アクターは、ActorSystemオブジェクトのactorOf()メソッドを呼び出すことで作成できます。
- ActorContextオブジェクトのactorOfメソッドを使用することもできます
- ActorContextオブジェクトはアクターをラップします
- AbstractActorアクターのActorContextを取得するには、getContextのインスタンスメソッドを呼び出します。
- 監督
- 各俳優には、監督俳優が1人だけいます
- アクターが最初のアクターのコンテキストを使用して別のアクターを作成する場合、最初のアクターは2番目のアクターの監督になります
- 最初の俳優は通常親と呼ばれます
- 2つ目は通常、子供または部下と呼ばれます
- ActorSystemのactorOf()メソッドはどうですか?
- 各アクターシステムには、最初に自動的に生成される3つの最上位アクター(保護者と呼ばれる)があります。
- /
- /システム
- /ユーザー
- オブジェクトがActorSystemのactorOfを使用して作成されると、デフォルトで/ userの子ノードになります
- 各アクターシステムには、最初に自動的に生成される3つの最上位アクター(保護者と呼ばれる)があります。
- 規制当局は何をしますか?
- 子供のためのエージェントタスク
- 子供が失敗したときの正しい行動
- akkaでは、スーパーバイザーはエラーを許容する場所です。
規制データを入手する
ActorContextには、親と子の情報を取得するための多くのメソッドがあります。次に例を示します。
1. ActorRef parent()メソッドは、コンテキストによってバインドされたアクターの親を返します
2. java.lang.Iterable <ActorRef> getChildren()メソッド、Javaイテレータとして子を返す
3. ActorRef getChild(文字列名)メソッド、名前で子を返す、後者はweinull
指定された親を取得するために、次の呼び出しを使用できます:getContext()。Parent()
監視付き継承システム
スーパーバイザーの関係はツリーであり、各アクター(/を除く)には親が1つだけあり、各アクターにはゼロ以上の子があります
各アクターはパス(ActorPath)で指定できます
ActorRefのパスを取得するには、path()インスタンスメソッドを使用できます。
説明する絵があります:親、子供、道の概念
アクターはどのようにしてその名前を見つけましたか?
ActorPathを介して、ActorPathオブジェクトには、このパスアクター(文字列型)の名前を返すname()メソッドがあるため、getSelf()。Path()。Name()はその名前を返します
receiveBuilder()を取得しますか?2つの方法があります
// OLD パブリック クラス SomeActorは延びAbstractActorを{ パブリックSomeActor(){ 受け取る(ReceiveBuilder 。.match(文字列クラス、この::のonMessage) .build())。 } } // NEW @Overrideの パブリック受信createReceive(){ 戻りreceiveBuilder() .match(文字列。クラス、この::のonMessage) .build(); }
規制の詳細
アクターが例外をスローすると、特別なシステムメッセージがその親に送信されます。
現時点では、親アクターには4つのオプションがあります。
1.回復、2。再起動、3。停止、4。劣化
選択された通信はシステムメッセージであり、特別なシステムメッセージキューを介して実行できます。
失敗した子を復元するには、createReceive()メソッドが再度呼び出され、失敗が発生すると、失われたメッセージが渡されます