簡單的演員實現
考慮員工與其人力資源部門之間的溝通。
http://i.stack.imgur.com/7xZNq.jpg
當訊息傳遞給 actor 時,廣泛地在以下六個步驟中解釋這些:
-
員工創造了一種叫做
ActorSystem
的東西。 -
它使用 ActorSystem 來建立一個名為
ActorRef
的東西。訊息(MSG)被髮送到ActorRef
(HR Actor 的代理)。 -
演員 ref 將訊息傳遞給
Message Dispatcher
。 -
Dispatcher 將訊息排入目標 Actor 的
MailBox
中。 -
然後 Dispatcher 將
Mailbox
放在一個 Thread 上(下一節將詳細介紹)。 -
MailBox
將訊息出列並最終將其委託給實際的 HR Actor 的receive
方法。
/** The Main Program consider it as a Employee Actor that is sending the requests **/
object EmployeeActorApp extends App{
//Initialize the ActorSystem
val actorSystem=ActorSystem("HrMessageingSystem")
//construct the HR Actor Ref
val hrActorRef=actorSystem.actorOf(Props[HrActor])
//send a message to the HR Actor
hrActorRef!Message
//Let's wait for a couple of seconds before we shut down the system
Thread.sleep (2000)
//Shut down the ActorSystem.
actorSystem.shutdown()
}
/** The HRActor reads the message sent to it and performs action based on the message Type **/
class HRActor extends Actor {
def receive = {
case s: String if(s.equalsIgnoreCase(`SICK`)) => println("Sick Leave applied”)
case s: String if(s.equalsIgnoreCase(`PTO`)) => println("PTO applied “)
}
}