价值!不是akka.routing.Router的成员

时间:2015-09-23 19:57:25

标签: scala akka

我一直在努力让一些Akka示例启动并运行,并遇到了一个给我带来很多麻烦的问题。对我来说很奇怪的是,有些代码直接来自不起作用的文档。

import akka.actor._
import akka.routing.{ ActorRefRoutee, RoundRobinRoutingLogic, Router, Broadcast }


object TransformationManager {
  case class ProcessFile(fileIt:Iterator[String])
  case class ProcessLines(lines:List[List[String]], last:Boolean = false)
  case class LinesProcessed(lines:List[List[String]], last:Boolean = false)

  case object WorkAvailable
  case object WorkRequest
}

class TransformationManager extends Actor {
  import TransformationManager._

  val workChunkSize = 10
  val workersCount = 10

 def receive = {
   case ProcessFile(fileIt) => 
   var router = {
    val routees = Vector.fill(workersCount) {
      val r = context.actorOf(Props[SampleWorker])
      context watch r
      ActorRefRoutee(r)
    }
    Router(RoundRobinRoutingLogic(), routees)
   }
   router ! Broadcast(WorkAvailable) //error here !!!!!!!!!
 }
}

在最后一行代码中,

router ! Broadcast(WorkAvailable)

我收到了错误,

value ! is not a member of akka.routing.Router

我为什么这不起作用而感到茫然。

2 个答案:

答案 0 :(得分:3)

参考文档路由器可能是一个演员,然后!应该可以工作,但它不一定是,取决于你如何创建它。在这里阅读更多: http://doc.akka.io/docs/akka/snapshot/scala/routing.html#A_Router_Actor

答案 1 :(得分:2)

!上没有Router。您可以使用router.route发送消息。

router.route(msg, sender())