2014-01-24 76 views
0

我剛剛開始使用akka,並不明白ActorSystem名稱的用途。ActorSystem的名稱有什麼用途?

要在同一個JVM或主機(需要遠程訪問)中運行多個參與者系統,它們無論如何都需要在不同的端口上運行。

akka.tcp://[email protected]:22222 /用戶/招待員 akka.tcp://[email protected]:33333 /用戶/招待員

由於端口號爲的一部分尋址方案,地址中爲什麼還有演員系統名稱?

回答

2

就akka遠程處理而言,是的,該端口將作爲區分標記,但並非所有系統都使用遠程處理;這是一個附加。沒有啓用遠程處理的核心參與者庫需要能夠支持將同一個參與者的概念部署到相同路徑下的同一個JVM中的兩個獨立參與者系統中,並且能夠區分它們,演員系統的名字發揮作用。假設這個演員做了一些日誌記錄。如果您有兩個獨立的actor系統在同一個JVM中運行,那麼您將如何區分哪個實例(部署到system1中的實例或部署到system2中的實例)是生成日誌消息的實例?通過在完全合格的路徑中包含角色系統的名稱,您將能夠區分哪個是哪個。

這是一個需要名稱的簡單示例,我相信人們可以與其他人取得聯繫。但從遠程角度思考它並不是正確的思考方式。正如我前面提到的,Remoting是一個附加組件,它建立在覈心庫之上。核心庫需要這種差異化,遠程處理只是繼承了它,即使它看起來沒有必要。

+1

我也想補充一點,人類有名字的原因不僅僅是地址或UUID。有時,談論「system3」而不是「194.256.119.4:4000」 –