akka调用reomte actor
2016-04-24 00:00
369 查看
文件:build.sbt name := "TestIM" version := "1.0" scalaVersion := "2.11.7" libraryDependencies ++= Seq( "com.typesafe.akka" %% "akka-actor" % "2.4.1", "com.typesafe.akka" %% "akka-remote" % "2.4.1", "com.typesafe.akka" %% "akka-kernel" % "2.4.1", "com.typesafe.akka" %% "akka-stream-experimental" % "1.0", "com.typesafe.akka" %% "akka-http-core-experimental" % "1.0", "com.typesafe.akka" %% "akka-http-experimental" % "1.0", "com.typesafe.akka" %% "akka-http-spray-json-experimental" % "1.0", "org.reactivemongo" %% "reactivemongo" % "0.11.7", "org.scalatest" %% "scalatest" % "2.2.1" % "test" ) resolvers += "Sonatype Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/" resolvers += "Typesafe" at "https://repo.typesafe.com/typesafe/releases/"
application.conf
RemoteSys { akka { actor { provider = "akka.remote.RemoteActorRefProvider" } remote { enabled-transports = ["akka.remote.netty.tcp"] netty.tcp { hostname = "127.0.0.1" port = 2552 } } } } LocalSys { akka { actor { provider = "akka.remote.RemoteActorRefProvider" } remote { enabled-transports = ["akka.remote.netty.tcp"] netty.tcp { hostname = "127.0.0.1" port = 2553 } } } }
RemoteActor
/** * Created by zzg on 16-4-24. */ class RemoteActor extends Actor{ def receive = { case message : String => sender ! message + "got someting" } }
RemoteNodeApp(远程节点actor启动)
import akka.actor.{Props, ActorSystem} import com.typesafe.config.ConfigFactory /** * Created by zzg on 16-4-24. */ object RemoteNodeApp extends App{ val config = ConfigFactory.load.getConfig("RemoteSys") val system = ActorSystem("RemoteNodeApp",config) system.actorOf(Props[RemoteActor],"remoteActor") }
LocalActor
import akka.actor.{ActorLogging, Actor} import akka.util.Timeout import scala.concurrent.duration._ import scala.concurrent.Await import akka.pattern.ask /** * Created by zzg on 16-4-24. */ class LocalActor extends Actor with ActorLogging { val remoteActor = context.actorSelection("akka.tcp://RemoteNodeApp@127.0.0.1:2552/user/remoteActor") implicit val timeout = Timeout(5 seconds) def receive = { case message => val future = (remoteActor ? message).mapTo[String] val result = Await.result(future, timeout.duration) log.info("Message received from server -> {}", result) } }
LocalNodeApp(当前节点actor启动)
import akka.actor.{Props, ActorSystem} import com.typesafe.config.ConfigFactory /** * Created by zzg on 16-4-24. */ object LocalNodeApp extends App{ val config = ConfigFactory.load.getConfig("LocalSys") val system = ActorSystem("LocalNodeApp",config) val localActor = system.actorOf(Props[LocalActor],"localActor") localActor ! "hello demo actor" }
相关文章推荐
- http常见的安全攻防
- Hive实现WordCount
- spark-shell实现WordCount&按word排序&按count排序
- String,StringBuffer与StringBuilder的区别
- 机房水题欢乐赛 2016-04-22 上午
- MATLAB聚类分析(Cluster Analysis)
- ZOJ 3946 Highway Project(spfa最短路+记忆化搜索)
- 不用密码进入数据库
- 机房水题欢乐赛 2016-04-23 上午 搜索
- zoj 3938 Defuse the Bomb
- Atom编辑器入门到精通(五) Git支持
- Windbg调试命令详解
- 面试的一些总结
- Space Shooter之飞船的运动、边界控制和运动旋转
- python带tkinter窗口的ftp服务器
- 用border画三角形
- 机房水题欢乐赛 2016-04-23 下午
- [转转]反调试技巧总结-原理和实现-----转
- Nodejs windows的安装
- 第八次作业