アッカ学習

アッカに電話

  • 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の子ノードになります
  • 規制当局は何をしますか?
    • 子供のためのエージェントタスク    
    • 子供が失敗したときの正しい行動
  • 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()メソッドが再度呼び出され、失敗が発生すると、失われたメッセージが渡されます

 

おすすめ

転載: www.cnblogs.com/li-daphne/p/12689609.html