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

  • 时间:
  • 浏览:0
  • 来源:新大发快三—大发彩票APP

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

我我觉得文章不错?扫描关注

在ExampleActor中,通过隐式变量context创建了OtherActor实例:val other = context.actorOf(Props[OtherActor], “OtherActor”),在ExampleActor的receive土依据中,防止一种不之类 型的消息之类 :

不能 看过,tell土依据的实现依赖于!土依据。可能性在另三个白多多Actor当中使用!土依据时,之类 ExampleActor中使用的other ! msg向OtherActor发送消息,则sender隐式为ExampleActor,可能性全是在Actor中使用则默认为Actor.noSender,即sender为null。

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

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发送完消息后,或者返回另三个白多多Future作为后期可能性的返回,当前发送方Actor将等待时间目标Actor的返回,Akka中使用?土依据进行Send-And-Receive-Future消息的发送,它也同样有另三个白多多重载的土依据ask

本将主要内容:

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

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

代码运行结果如下:

代码中定义了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。

代码运行结果如下:

防止Start类型的消息时,直接使用!进行消息发送,而防止Run类型的消息时,使用的是tell土依据,不能 看过使用tell土依据需用显式地指定其sender,而使用!进行消息发送则不需用,事实上!土依据通过隐式值传入需用的Sender,对比!与tell土依据的定义便很容易理解