2017-02-11 25 views
0

我創建與遠程演員一個簡單的應用程序(例如,從here)發送消息至演員:噸如何從SBT殼

object HelloRemote extends App { 
    val system = ActorSystem("HelloRemoteSystem") 
    val remoteActor = system.actorOf(Props[RemoteActor], name = "RemoteActor") 
    remoteActor ! "The RemoteActor is alive" 
} 

class RemoteActor extends Actor { 
    def receive = { 
    case msg: String => 
     println(s"RemoteActor received message '$msg'") 
     sender ! "Hello from the RemoteActor" 
    } 
} 

是有可能從SBT殼發送給它的消息?

回答

0

只有演員參考才需要發送消息給演員。例如你可以做同樣的斯卡拉殼: 按照這些:

import akka.actor._ 

定義你的演員在外殼。

class RemoteActor extends Actor { 
     def receive = { 
      case msg: String => 
       println(s"RemoteActor received message '$msg'") 
       sender ! "Hello from the RemoteActor" 
     } 
     } 

val system = ActorSystem("HelloRemoteSystem") 
val remoteActor = system.actorOf(Props[RemoteActor], name = "RemoteActor") 
remoteActor ! "The RemoteActor is alive" 

這裏remoteActor是Actor實例化的參考。你可以從任何地方發送消息,如果是1.這是演員還活着,2.你能夠在那裏獲得演員參考。

+0

謝謝,但是當我嘗試'''進口akka.actor._''' 我得到''' :25:error:not found:value akka import akka.actor._ ^''' 或如果我嘗試從sbt shell: '''> import akka.actor._ [error] No valid parser可用。 [error] import akka.actor._'''' – igx

+0

我認爲你沒有使用sbt控制檯的akka​​庫。請參閱此SO鏈接http://stackoverflow.com/questions/18812399/how-to-use-third-party-libraries-with-scala-repl如何使用sbt控制檯庫 –

0

只有演員可以發送消息給其他演員。

+0

但是,它可以創建在SBT殼的臨時演員,將消息發送到遠程演員 – igx