博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大数据学习——akka学习
阅读量:4622 次
发布时间:2019-06-09

本文共 4615 字,大约阅读时间需要 15 分钟。

架构图

重要类介绍

ActorSystem

在Akka中,ActorSystem是一个重量级的结构,他需要分配多个线程,所以在实际应用中,ActorSystem通常是一个单例对象,我们可以使用这个ActorSystem创建很多Actor。

Actor

在Akka中,Actor负责通信,在Actor中有一些重要的生命周期方法。

 

1.preStart()方法:该方法在Actor对象构造方法执行后执行,整个Actor生命周期中仅执行一次。

2.receive()方法:该方法在Actor的preStart方法执行完成后执行,用于接收消息,会被反复执行。

 

代码

 

 

4.0.0
cn.itcast.akka
MyRPC
1.0
1.7
1.7
UTF-8
2.10.6
2.10
org.scala-lang
scala-library
${scala.version}
com.typesafe.akka
akka-actor_2.10
2.3.14
com.typesafe.akka
akka-remote_2.10
2.3.14
src/main/scala
src/test/scala
net.alchim31.maven
scala-maven-plugin
3.2.2
compile
testCompile
-make:transitive
-dependencyfile
${project.build.directory}/.scala_dependencies
org.apache.maven.plugins
maven-shade-plugin
2.4.3
package
shade
*:*
META-INF/*.SF
META-INF/*.DSA
META-INF/*.RSA
reference.conf
cn.itcast.akkk.Master
package cn.itcast.akkaimport akka.actor.{Actor, ActorSystem, Props}import akka.actor.Actor.Receiveimport com.typesafe.config.ConfigFactory/**  * Created by ZhaoXing on 2016/8/18.  */class Master extends Actor {  override def receive: Receive = {    case "start" => {      println("starting...")      println("started")    }    case "stop" => {      println("stopping...")      println("stopped")    }    //Master接收到Worker的消息    case "connect" => {      println("a client connected...")      //向Worker反馈消息      sender ! "success"    }    case _ => println("123")  }}object Master {  def main(args: Array[String]) {    val host = "127.0.0.1"    val port = 8888    //    val host = args(0)    //    val port = args(1).toInt    val confStr =      s"""         |akka.actor.provider = "akka.remote.RemoteActorRefProvider"         |akka.remote.netty.tcp.hostname = "$host"         |akka.remote.netty.tcp.port = "$port"       """.stripMargin    val conf = ConfigFactory.parseString(confStr)    //ActorSystem是单例的,用于创建Acotor并监控actor    val actorSystem = ActorSystem("MaterActorSystem", conf)    //通过ActorSystem创建Actor    val master = actorSystem.actorOf(Props[Master], "Master")    master ! "start"    master ! "hello"    master ! "stop"    actorSystem.awaitTermination()  }}
package cn.itcast.akkaimport akka.actor.{Actor, ActorSystem, Props}import akka.actor.Actor.Receiveimport com.typesafe.config.ConfigFactory/**  * Created by ZhaoXing on 2016/8/18.  */class Worker extends Actor {  //preStart在构造器之后receive之前执行  override def preStart(): Unit = {    //首先跟Master建立连接    val master = context.actorSelection("akka.tcp://MaterActorSystem@127.0.0.1:8888/user/Master")    //通过mater的引用向Master发送消息    master ! "connect"  }  override def receive: Receive = {    case "success" => {      println("a msg for master:success")    }  }}object Worker {  def main(args: Array[String]) {    val host = "127.0.0.1"    val port = 8889    //    val host = args(0)    //    val port = args(1).toInt    val confStr =      s"""         |akka.actor.provider = "akka.remote.RemoteActorRefProvider"         |akka.remote.netty.tcp.hostname = "$host"         |akka.remote.netty.tcp.port = "$port"       """.stripMargin    val conf = ConfigFactory.parseString(confStr)    //单例的ActorSystem    val actorSystem = ActorSystem("WorkerActorSystem", conf)    //通过actorSystem来创建Actor    val worker = actorSystem.actorOf(Props[Worker], "Worker")    actorSystem.awaitTermination()  }}

 

转载于:https://www.cnblogs.com/feifeicui/p/10974786.html

你可能感兴趣的文章
数据结构库——智能指针的实现(上)
查看>>
Redis缓存穿透和缓存雪崩以及解决方案
查看>>
python 机器学习三剑客 之 Matplotlib
查看>>
【POJ2396】Budget(上下界网络流)
查看>>
【poj1087/uva753】A Plug for UNIX(最大流)
查看>>
使用Reachability监测网络变化-陈鹏
查看>>
正确遍历删除List中的元素方法(推荐)
查看>>
flask + Python3 实现的的API自动化测试平台---- IAPTest接口测试平台(总结感悟篇)...
查看>>
异步与多线程实现不阻塞区别
查看>>
openAI最近推出了一个新的语言模型 "GPT-2"
查看>>
工厂设计模式。。应用
查看>>
MySQL高可用架构-MHA环境部署记录
查看>>
K8S 日志收集(四):logstash 安装
查看>>
Python之字符串搜索和替换
查看>>
thinkphp 参数传值
查看>>
web中的position的意思理解
查看>>
java中Collection类及其子类
查看>>
关于无线的Idle Timeout和Session Timeout
查看>>
jquery对radio和checkbox的操作
查看>>
hadoop1.x和2.x的一些主要区别
查看>>