2017-02-11 71 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