设为首页 加入收藏

TOP

Akka(8): 分布式运算:Remoting-远程查找式(五)
2017-10-09 14:06:30 】 浏览:9449
Tags:Akka 分布式 运算 Remoting- 远程 查找
ecider.orElse(SupervisorStrategy.defaultDecider) } val calcActor
= context.actorOf(CalcProps.props,"calculator") override def receive: Receive = { case msg@ _ => calcActor.forward(msg) } } object CalculatorRunner extends App { val remoteSystem = ActorSystem("remoteSystem") val calcActor = remoteSystem.actorOf(Props[SupervisorActor],"supervisorActor") /* import remoteSystem.dispatcher calcActor ! Clear calcActor ! Num(13.0) calcActor ! Mul(1.5) implicit val timeout = akka.util.Timeout(1 second) ((calcActor ? GetResult).mapTo[String]) foreach println scala.io.StdIn.readLine() calcActor ! Div(0.0) calcActor ! Div(1.5) calcActor ! Add(100.0) ((calcActor ? GetResult).mapTo[String]) foreach println */ scala.io.StdIn.readLine() remoteSystem.terminate() }

local/src/main/resources/application.conf

akka { actor { provider = remote } remote { enabled-transports = ["akka.remote.netty.tcp"] netty.tcp { hostname = "127.0.0.1" port = 0 } } }

local/localAccessDemo.scala

import akka.actor._ import akka.util.Timeout import scala.concurrent.duration._ import akka.pattern._ import remoteLookup.messages.Messages._ object LocalSelectionDemo extends App { val localSystem = ActorSystem("localSystem") import localSystem.dispatcher val path = "akka.tcp://remoteSystem@127.0.0.1:2552/user/supervisorActor/calculator"


      implicit val timeout = Timeout(5 seconds) for (calcActor : ActorRef <- localSystem.actorSelection(path).resolveOne()) { calcActor ! Clear calcActor ! Num(13.0) calcActor ! Mul(1.5) ((calcActor ? GetResult).mapTo[String]) foreach println calcActor ! Div(0.0) calcActor ! Div(1.5) calcActor ! Add(100.0) ((calcActor ? GetResult).mapTo[String]) foreach println } scala.io.StdIn.readLine() localSystem.terminate() } object LocalIdentifyDemo extends App { class RemoteCalc extends Actor with ActorLogging { val path = "akka.tcp://remoteSystem@127.0.0.1:2552/user/supervisorActor/calculator" context.actorSelection(path) ! Identify(path)  //semd req for ActorRef
 import context.dispatcher implicit val timeout = Timeout(5 seconds) override def receive: Receive = { case ActorIdentity(p,someRef) if p.equals(path) => someRef foreach { calcActor => calcActor ! Clear calcActor ! Num(13.0) calcActor ! Mul(1.5) ((calcActor ? GetResult).mapTo[String]) foreach println calcActor ! Div(0.0) calcActor ! Div(1.5) calcActor ! Add(100.0) ((calcActor ? GetResult).mapTo[String]) foreach println } } } val localSystem = ActorSystem("localSystem") val localActor = localSystem.actorOf(Props[RemoteCalc],"localActor") scala.io.StdIn.readLine() localSystem.terminate() }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

首页 上一页 2 3 4 5 6 下一页 尾页 5/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇spark获取时间 下一篇sbt 学习笔记(1)sbt安装和交互..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目