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

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

我一直在努力获取一些 Akka 示例并 运行ning 并且 运行 遇到了一个给我带来不少麻烦的问题。令我感到奇怪的是,直接从文档中提取的代码不起作用。

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

我不知道为什么这不起作用。

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

router.route(msg, sender())

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