zoukankan      html  css  js  c++  java
  • akka学习

    调用akka

    • 111
      • 222
      • 222
        • 22
    • 111
    • 111

    12222

    调用akka

    关键概念

    ActorSystem

    AbstracActor

    ActorRef

    createRecive()

    tell()

    Patterns.ask()

    -

    动态的Actor创建

    • 在java中我们可以发现tasks可以创建tasks
    • 在akka java中,actors也能创建actors
      • actor的创建可以通过调用ActorSystem对象的actorOf()方法
      • 也可以通过ActorContext对象的actorOf方法
        • 一个ActorContext对象包裹一个actor
        • 为了获取一个AbstractActor actor的ActorContext,可以调用getContext的实例方法
    • 监管supervision
    • 每个actor正好有一个监管actor
    • 当一个actor使用第一个actor的context创建另一个时,那么第一个actor就是第二个actor的监管
      •   第一个actor通常被称为parent
      • 第二个通常被称为child或者subordinate
    • 那么通过ActorSystem的actorOf()方法创建呢?
      • 每一个actor系统具有三个顶级的actor(称为guardians),是在开始时自动产生的
        • /
        • /system
        • /user
      • 当一个对象在ActorSystem中使用actorOf被创建,它默认是/user的child节点
    • 监管者做什么?
      • 对child代理任务    
      • 当children失败的时候矫正action
    • 在akka中监管者是错误容忍的地方。

    获取监管数据

    ActorContext有许多方法检索parent、child的信息,例如:

    1、ActorRef parent()方法,返回被context绑定的actor的parent

    2、java.lang.Iterable<ActorRef> getChildren()方法,返回children作为java的迭代器

    3、ActorRef getChild(String name)方法,通过name返回child,后者weinull

    为了获取指定的parent,可以通过下面的调用:getContext().parent()

    监管的继承体系

    监管者的关系是一棵树tree,每个actor(除了/)只有一个parent,每个actor有零个或多个children

    每个actor可以通过path(ActorPath)被指定

    为了获取ActorRef的路径,可以通过path()实例方法

    有一个张图可以解释:parent、children、path概念

    Actor怎么发现它的名字?

    通过ActorPath,ActorPath对象具有name()方法返回这个路径actor的name(String类型),因此getSelf().path().name()返回自身的名字name

    获取receiveBuilder()?有两种方式

    //OLD
    public class SomeActor extends AbstractActor{
        public SomeActor(){
            receive(ReceiveBuilder
    .match(String.class,this::onMessage)
    .build());
        }
    }
    
    //NEW    
    @Override
    public Receive createReceive() {
    return receiveBuilder()
    .match(String.class, this::onMessage)
    .build();
    }

    监管者详细信息

    当一个actor抛出异常的时候,一个特殊的系统msg被发送给它的parent。

    此时Parent actor有四种选择:

    1、恢复,2、重启,3、停止,4、恶化

    这些选择的交流是是一个系统的msg,可以通过特殊的system-msg队列完成。

    恢复失败的child,createReceive()方法被重新调用,当失败发生的时候lost的msg被传递

  • 相关阅读:
    focus([[data],fn]) 当元素获得焦点时,触发 focus 事件。
    dblclick([[data],fn]) 当双击元素时,会发生 dblclick 事件。
    click([[data],fn]) 触发每一个匹配元素的click事件。
    change([[data],fn]) 当元素的值发生改变时,会发生 change 事件。
    blur([[data],fn]) 当元素失去焦点时触发 blur 事件。
    toggle([speed],[easing],[fn]) 用于绑定两个或多个事件处理器函数,以响应被选元素的轮流的 click 事件。
    hover([over,]out)
    triggerHandler(type, [data])
    trigger(type,[data]) 在每一个匹配的元素上触发某类事件。
    one(type,[data],fn) 为每一个匹配元素的特定事件(像click)绑定一个一次性的事件处理函数。
  • 原文地址:https://www.cnblogs.com/li-daphne/p/12689609.html
Copyright © 2011-2022 走看看