Akka并发编程——第四节:Actor模型(三)

  • 时间:
  • 浏览:0

关于远程ActorRef的获取,亲戚亲戚大伙将在后续章节中进行讲述。

代码运行结果:

本例中的重点代码如下

本将主要内容:

1. Actor引用、Actor路径

在前面的例子中,亲戚亲戚大伙通过

全部代码如下:

获取MyActor 的直接父Actor的ActorRef,在本例中为FirstActor,可能在FirstActor中,亲戚亲戚大伙使用

返回的便是FirstActor的ActorRef对象,ActorRef最重要的作用便是向Actor发送消息,这一

代码

现在,让亲戚亲戚大伙来总结一下获取ActorRef的法律法律依据:

(1)通过ActorSystem的actorOf法律法律依据,不过这一 法律法律依据是通过创建Actor,有后来返回其ActorRef

(2)通过context.actorOf法律法律依据,这一 法律法律依据也是通过创建Actor,有后来返回其ActorRef

(3)通过context.parent、context.self、context.children法律法律依据获取当前Actor的父Actor、当前Actor及子Actor的ActorRef,这一 法律法律依据是获取可能创建好的Actor的ActorRef

(4)通过val myActor1=system.actorSelection(myActorPath)法律法律依据来获取ActorRef,这一 法律法律依据也是获取可能创建好的Actor的ActorRef

可能使用到了ActorPath。在Akka中,ActorPath采用统一资源定位符的法律法律依据进行组织,这一

下图是Akka官方文档中给出的一张图

另外,还还前要通过context隐式对象获取父Actor和子Actor的ActorRef,示例代码如下:

发送消息。

创建了MyActor,FirstActor便自动成为MyActor的直接Supervisor。如此便还前要通过代码

该图清晰地说明了ActorPath,ActorRef,Actor及ActorSystem之间的关系,并说明了Actor整体的层次型态。前面亲戚亲戚大伙提到,Akka应用程序会持有另另1个 名称为user的Actor,该Actor被称为guardian supervisor(守卫监督器),无论是ActorSystem创建的Actor还是通过ActorContext创建的Actor都为user的子类,它是最顶级的Actor。

通过 val firstActorPath=system.child(“firstActor”)构造另另1个 ActorPath,有后来使用

代码运行结果:

中,使用

获取路径下的ActorRef,除这一 法律法律依据外,还还前要通过绝对路径 val myActor2=system.actorSelection(“/user/firstActor”)及相对路径 val myActor3=system.actorSelection(“../firstActor”)的法律法律依据获取ActorRef

,前要注意的是绝对路径使用的是guardian supevisor,即/user/firstActor的这一 法律法律依据。

ActorPath当中,akka.udp表示的是使用的协议,my-sys表示的是ActorSytem名称,host.example.com:5678为远程机器地址及端口,user为guardian supervisor,service-b为当前应用程序的顶级Actor(通过system.actorOf法律法律依据创建的)

对于ActorRef,亲戚亲戚大伙可能不熟悉了,通过调用ActorSystem.actorOf法律法律依据还前要创建Actor,返回的便是ActorRef,这一代码

可能要获取myActor,则基法律法律依据是类型的,这一

本地ActorPath是Akka并发编程中的ActorPath表示法律法律依据,而远程ActorPath是Akka分布式编程中常用的ActorPath表示法律法律依据,”akka.tcp://my-sys@host.example.com:5678/user/service-b”中的TCP表示使用的是TCP协议,也还前要使用UPD协议,使用UDP协议的远程ActorPath表示法律法律依据有如下形式

代码运行结果

另外,还还前要通过

Scala学习(公众微信号:ScalaLearning)每天为亲戚亲戚大伙带来有后来 Scala语言、Spark、Kafka、Flink、AKKA等大数据技术干货及相关技术资讯。技术永无止境,勇攀高峰,一往直前!

其实文章不错?扫描关注

system.actorSelection(myActorPath)法律法律依据获取相应的ActorRef。有后来再使用获取到的ActorRef向Acto发送消息