【问题标题】:value actorOf is not a member of object akka.actor.Actor值 actorOf 不是对象 akka.actor.Actor 的成员
【发布时间】:2013-12-12 04:59:08
【问题描述】:

我试图编译这段代码以了解演员的实际工作方式,但它给了我一条错误消息:值 actorOf 不是对象 akka.actor.Actor 的成员

我是 akka 的新手,实际上无法理解如何开始和了解实现整个定义的结构,例如每个类的接收方法。另外,ActorLogging 的实际工作是什么?有人可以帮忙吗?谢谢。

import akka.actor.Actor

case object Start

object Main {
  def main(args: Array[String]): Unit = {
    println("Start");
    val echo = Actor.actorOf[EchoActor]
    echo.start()
    echo ! "Hello World"
    echo.stop()
  }
}
class EchoActor extends Actor {
  def receive = {
    case s: String => println(s)
  }
}

【问题讨论】:

标签: scala akka


【解决方案1】:

看起来您正在尝试将(我认为)Akka 1.x 时代代码与 Akka 2.x 一起使用。有些语义是完全不同的。这是正确实现它的一种方法:

import akka.actor._

object Main {
  def main(args: Array[String]) {
    println("Start");
    val system = ActorSystem("hello-world")
    val echo = system.actorOf(Props[EchoActor])
    echo ! "Hello World"
    echo ! PoisonPill
  }
}

class EchoActor extends Actor with ActorLogging {
  override def preStart() {
    log.info("starting actor")
  }
  def receive = {
    case s: String => log.info(s)
  }
  override def postStop() {
    log.info("stopping actor")
    context.system.shutdown
  }
}

基本上,您需要使用演员系统来创建演员,不再需要显式启动。发送消息的工作方式相同。要停止一个actor,您向它发送PoisonPill 对象,这将导致actor 在收到其邮箱中的消息后立即关闭。

另外,我给actor添加了一个post-stop钩子,用于在actor停止时关闭系统,否则应用程序永远不会退出。

ActorLogging trait 允许您轻松地将 Actor 连接到 Akka 的日志框架。当你将它混合到一个演员中时,你会得到一个log,你可以像普通的记录器一样使用它。

【讨论】:

    【解决方案2】:

    您可能需要先查看 Akka 文档。链接在这里: http://doc.akka.io/docs/akka/snapshot/scala/actors.html

    你想做的是:

    import akka.actor.ActorSystem
    
    // ActorSystem is a heavy object: create only one per application
    val system = ActorSystem("mySystem")
    val myActor = system.actorOf(Props[MyActor], "myactor2")
    

    (取自文档)

    所以首先你创建一个Actor系统,你应该使用这个系统来创建这个actor。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-06
      • 1970-01-01
      • 2022-01-01
      • 2016-02-27
      • 2017-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多