有两个本地角色(没有使用远程处理)。为示例简化了行为者:
class ProcessorActor extends Actor {
override def receive: Receive = {
case src:Source[Int, NotUsed] =>
//TODO processing of `src` here
}
}
class FrontendActor extends Actor {
val processor = context.system.actorOf(Props[ProcessorActor])
...
override def receive: Receive = {
case "Hello" =>
val f:Future[Source[Int, NotUsed]] = Future (Source(1 to 100))
f pipeTo processor
}
}
// entry point:
val frontend = system.actorOf(Props[FrontendActor])
frontend ! "Hello"因此,FrontendActor将Source发送到ProcessorActor。在上面的例子中,它是成功的。
这样的方法可以吗?
发布于 2018-05-11 09:34:17
是的,这是可以的,但不太像你描述的那样工作。FrontendActor不发送Future[Source],它只发送Source。
从医生那里:
pipeTo在将来安装onComplete处理程序,以影响将结果提交给另一个参与者。
换句话说,pipeTo的意思是“当这个Future可用时,将它的结果发送给参与者”。
请注意,即使使用远程处理,这也是可行的,因为Future是本地解析的,没有通过线路发送给远程参与者。
https://stackoverflow.com/questions/50288001
复制相似问题