Akka并发编程——第六节:Actor模型(五)

  • 时间:
  • 浏览:0

代码运行结果如下:

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

人太好文章不错?扫描关注

理解了Fire-And-Forget消息模型后,接着对Send-And-Receive-Future消息模型进行介绍,下面的代码给出了其使用示例。

处置Start类型的消息时,直接使用!进行消息发送,而处置Run类型的消息时,使用的是tell最好的措施,都还都可以就看使用tell最好的措施都要显式地指定其sender,而使用!进行消息发送则不都要,事实上!最好的措施通过隐式值传入都要的Sender,对比!与tell最好的措施的定义便很容易理解

Akka提供了一种消息模型:fire-and-forget和Send-And-Receive-Future。fire-and-forget是一种单向消息发送模型,指的是异步发送消息,通过异步发送消息且消息发送后都还都可以立即返回,Akka中使用?最好的措施进行fire-and-forget消息发送,如stringActor!”Creating Actors with implicit val context”,它的意思是当前发送方Aactor向stringActor发送字符串消息”Creating Actors with implicit val context”,发送完该消息后立即返回,而不想等候stringActor的返回,!还有个重载的最好的措施tell;Send-And-Receive-Future指的是异步发送消息则是一种双向消息发送模型,向目标Actor发送完消息后,或者返回一一有4个Future作为后期不可能 的返回,当前发送方Actor将等候目标Actor的返回,Akka中使用?最好的措施进行Send-And-Receive-Future消息的发送,它也同样有一一有4个重载的最好的措施ask

在ExampleActor中,通过隐式变量context创建了OtherActor实例:val other = context.actorOf(Props[OtherActor], “OtherActor”),在ExampleActor的receive最好的措施中,处置一种不之类型的消息之类:

代码中定义了3种类型的消息,分别是当时人基础信息case class BasicInfo(id:Int,val name:String, age:Int)、当时人兴趣信息case class InterestInfo(id:Int,val interest:String)以及详细当时人信息case class Person(basicInfo: BasicInfo,interestInfo: InterestInfo),或者为这3种类型的消息定义了相应的Actor即BasicInfoActor、InterestInfoActor和PersonActor,在CombineActor分别创建相应Actor的实例,receive最好的措施中使用ask向BasicInfoActor、InterestInfoActor发送Send-And-Receive-Future模型消息,BasicInfoActor、InterestInfoActor中的receive最好的措施接收到发送来的Int类型消息并分别使用!向CombineActor发送BasicInfo、InterestInfo消息,将结果保处在Future[Person]中,或者通过代码pipe(combineResult).to(personActor)将结果发送给PersonActor。

代码运行结果如下:

本将主要内容:

1. !消息发送,Fire-and-Forget消息模型

2. ?消息发送,Send-And-Receive-Future消息模型

都还都可以就看,tell最好的措施的实现依赖于!最好的措施。不可能 在一一有4个Actor当中使用!最好的措施时,之类ExampleActor中使用的other ! msg向OtherActor发送消息,则sender隐式为ExampleActor,不可能 有的是在Actor中使用则默认为Actor.noSender,即sender为null。