2017-03-01 73 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