2017-03-01 81 views
0

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

回答

1

Akka路由器的主要目的是提供一个并行执行消息的机制。消息可以通过路由器发送到有效路线他们到目的地演员又名其routees(用作专用工作的)。因此,它不仅是重新定义路径。

在内部结构方面,当涉及到路由器的演员(你也可以定义一个standalone router),该消息传递优化:

  • 消息不会在路由器演员的邮箱
  • 排队
  • 消息直接发送到routee

另一个关键区别在于,路由器演员将消息转发给其routees不改变原本身的事实的nDer。因此,当你写:

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 
    } 
} 

我希望这回答你的问题。

+0

感谢您的回答,但请让我知道从哪里我可以学习阿卡作为初学者 – Partish