как отправить сообщение актеру из оболочки 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?


person igx    schedule 11.02.2017    source источник


Ответы (2)


Для отправки сообщений актеру требуется только ссылка на актера. например Вы можете сделать то же самое в оболочке scala: выполните следующие действия:

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 — это ссылка на экземпляр Актера. Вы можете отправлять сообщения откуда угодно, если 1. Этот актер жив и 2. Вы можете получить там ссылку на актера.

person Manish Mishra    schedule 11.02.2017
comment
Спасибо, но когда я пытаюсь import akka.actor._, я получаю <console>:25: error: not found: value akka import akka.actor._ ^ или если я пытаюсь из оболочки sbt: > import akka.actor._ [error] No valid parser available. [error] import akka.actor._ - person igx; 11.02.2017
comment
Я думаю, что вы не используете библиотеку akka с консолью sbt. Пожалуйста, обратитесь к этой ссылке SO stackoverflow.com/questions/18812399/ для Как использовать библиотеки с консолью sbt - person Manish Mishra; 12.02.2017

Только Актер может отправить сообщение другому Актеру.

person Thomas Lehoux    schedule 11.02.2017
comment
Но возможно ли создать временного актера в оболочке sbt, который будет отправлять сообщения удаленному актеру? - person igx; 11.02.2017