如何从路由器向routee发送消息?

时间:2015-11-17 17:56:41

标签: akka

我正在尝试使用Akka 2.4中的RoundRobinRoutingLogic来完成Jonas Boner的Pi计算示例。文档仅显示如何创建路由器,然后使用路由将消息发送回发件人。这只会产生一长串的动物。

installer.UILevel = MsiUILevel.msiUILevelNone;

我定义了一个正在创建的Worker actor,并将其添加到workerRouter的路由中。对于Calculate案例,我如何向RoundRobinRoutingLogic接下来选择的Work发送Work消息?

1 个答案:

答案 0 :(得分:1)

问题是您将sender()作为结果的目标传递给基础工作者ActorRef,而不是将ref发送给Master。如果您修改以下行,它应该解决您看到的问题:

//note the "self" instead of "sender()"
case Calculate => for (i <- 0 until numOfMessages) workerRouter.route(Work(i * numOfElements, numOfElements), self)

另外,我会&#34;分手&#34;你的代码有点如下:

def sendWork(i : Int) = 
  workerRouter.route(Work(i * numOfElements, numOfElements), self)

def receive = {
  case Calculate => (1 until numOfMessages) foreach sendWork

  ...
}