com.typesafe.akka
akka-actor_2.11
2.4.17
com.typesafe.akka
akka-remote_2.11
2.4.17
二、SenderActor
import akka.actor.Actor
object SenderActor extends Actor {
override def receive: Receive = {
case "start" => {
println("SenderActor: 接收到start消息")
//发送一个submitTaskMessage消息给ReceiverActor
// path 地址本地actor地址
//akka://actorSystem定义的名字/user/actor的名字
val receiverActor = context.actorSelection(path = "akka://actorSystem/user/receiverActor")
//发送消息
receiverActor ! SubmitTaskMessage("提交任务")
}
case SuccessSubmitTaskMessage(message) => {
println(s"SenderActor接收到 ${message}")
}
}
}
三、receiverActor
import akka.actor.Actor
object ReceiverActor extends Actor {
override def receive: Receive = {
case SubmitTaskMessage(message) => {
println(s"ReceiverActor:${message}")
//回复一个消息给SenderActor sender引用消息发送者回复
sender ! SuccessSubmitTaskMessage("成功提交任务")
}
}
}
四、MessageDefinition
//消息封装样例类 case class SubmitTaskMessage(message: String) case class SuccessSubmitTaskMessage(message: String)五、Entrance
import akka.actor.{ActorSystem, Props}
import com.typesafe.config.ConfigFactory
object Entrance {
def main(args: Array[String]): Unit = {
// 实现Acotr trait
// 创建actorSystem
val actorSystem = ActorSystem("actorSystem", ConfigFactory.load())
// 加载 Actor
val sendActor = actorSystem.actorOf(Props(SenderActor), "sendActor")
val receiverActor = actorSystem.actorOf(Props(ReceiverActor), "receiverActor")
sendActor ! "start"
}
}
运行结果:
SenderActor: 接收到start消息
ReceiverActor:提交任务
SenderActor接收到 成功提交任务



