學習 ProtoActor 中的 Context

原文參考:https://proto.actor/docs/context/

ProtoActor 中的 Context

Context

Proto.Actor 提供了兩種形式的 Context,一種是 RootContext,一種是 ActorContext。 這些上下文組合了不同 facets 提供的各種功能。 這兩種類型的 Context 都實現了 Spawner, Stopper, InfoSender facets ,另外 ActorContext 還實現了另一些 facets。

  • 注:facets 不大好翻譯,這裏保留原文。

Root Context Facets

  • Spawner
  • Stopper
  • Info
  • Sender

Actor Context Facets

  • Spawner
  • Stopper
  • Info
  • Sender
  • Receiver
  • Invoker
  • Supervisor

Context Facets

Spawner

RootContext,ActorContext 實現。

提供通過給定的 Props 參數 spawn 一個新的 actor 的能力。

C#

    var system = new ActorSystem();
    var props = Props.FromProducer(() => new GreetingActor());
    var pid = system.Root.Spawn(props);

    // other actor spawning methods:
    // system.Root.SpawnNamed(props, name: "greeter");
    // system.Root.SpawnPrefix(props, prefix: "greet-");

Stopper

RootContext,ActorContext 實現。 提供立即 stop 一個 actor,或者指示一個 actor 在處理完畢當前 mailbox 消息後 stop 的能力。

C#

    // 立即 stop 
    context.Stop(pid);
    await context.StopAsync(pid);
    
    // 處理完畢當前用戶 mailbox 中的消息後 stop
    context.Poison(pid);
    await context.PoisonAsync(pid);

Info

RootContext,ActorContext 實現。

提供對有關上下文的信息的訪問,例如當前 actor 的 Parent PID ,其自身的 Self PID,當前消息的 Sender PID, Actor 自身,以及 actor 所處位置的 ActorSystem

Sender

RootContext,ActorContext 實現。

通過 actor 異步模式,提供 Send(發送後不管)消息,以及 Request 等待響應能力。

C#

    var message = new MyMessage();
    var request = new MyRequest();

    context.Send(pid, message);
    
    var response = context.Request<MyResponse>(pid, request);

Receiver

ActorContext 實現。

通過包裹在 MessageEnvelope 機制中, 提供 Receive 消息的能力。

C#

    await context.Receive(envelope);

Invoker

ActorContext 實現。

調用提供了調用系統消息,調用用戶消息和升級故障的能力。

Invocation 提供了調用 system messages(系統消息),user messages(用戶消息),以及故障升級(escalate failures)的能力。

Supervisor

ActorContext 實現。

supervision 提供了在當前角色的監督下控制子角色生命週期的方法,以及將故障升級到監督層次結構中下一個角色的能力。

Supervision 提供了控制在當前 actor 監督下的 child actors 的生命週期的方法,並且有能力將故障升級到 supervision 層次等級中的下一個 actor。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章