簡單的演員實現

考慮員工與其人力資源部門之間的溝通。

http://i.stack.imgur.com/7xZNq.jpg

當訊息傳遞給 actor 時,廣泛地在以下六個步驟中解釋這些:

  1. 員工創造了一種叫做 ActorSystem 的東西。

  2. 它使用 ActorSystem 來建立一個名為 ActorRef 的東西。訊息(MSG)被髮送到 ActorRef(HR Actor 的代理)。

  3. 演員 ref 將訊息傳遞給 Message Dispatcher

  4. Dispatcher 將訊息排入目標 Actor 的 MailBox 中。

  5. 然後 Dispatcher 將 Mailbox 放在一個 Thread 上(下一節將詳細介紹)。

  6. 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 “)
}

}