路由器和演员之间的区别

时间:2017-03-01 06:39:43

标签: akka

我正在学习akka但是我无法找到路由器和actor之间的任何区别。路由器用于重新定义发送者和接收者之间的路径,并且演员服务于专门的工作。如果两者在结构上(就演员组成部分而言)之间存在任何差异,请告诉我。

1 个答案:

答案 0 :(得分:2)

Akka Routers的主要目的是提供一种并行执行消息的机制。消息可以通过路由器发送到 路由 它们到目的地演员,即其 路线 (服务于专注的工作)。因此,它不仅仅是重新定义路径。

就内部结构而言,当谈到路由器演员(您还可以定义standalone router)时,消息传递已经过优化:

  • 消息未在路由器actor的邮箱中排队
  • 消息将直接发送给routee

另一个关键区别是路由器角色在不改变原始发送者的情况下将消息转发到其路由。因此,当你写:

class TaskEngine extends Actor {
  val routeePaths: List[String] = ...
  val router: ActorRef = system.actorOf(RoundRobinGroup(paths).props(), "coffee-house-group")

  def receive = {
    case msg => router ! msg
  }
}

在普通演员中等同于以下内容。

class BasicActor(workerActor: ActorRef) extends Actor {

  def receive = {
    case msg => workerActor forward msg
  }
}

我希望这能回答你的问题。