2015-01-08 117 views
2

鉴于以下2个角色,DownloaderDownloadActor,后者演员有router,名为Router错误配置Akka路由器

然而,当我运行sbt run,我得到以下运行时异常:

造成的:akka.ConfigurationException:配置缺少 路由器[阿卡://下载/用户/ DownloadActor /路由器]在 'akka.actor.deployment'部分。

这里是我的代码:

Downloader.scala

object DownloadMain { 

    val system = ActorSystem("Downloader") 

    val actor = system.actorOf(Props[DownloadActor], "DownloadActor") 

    def main(args: Array[String]) { 
     actor ! new URL("http://www.cis.upenn.edu/~matuszek/index.html") 
    } 
} 

DownloadActor.scala

class DownloadActor extends Actor with ActorLogging { 

    val router = context.actorOf(Props[Worker].withRouter(FromConfig()), "Router") 
    ... 

application.conf

akka.actor.deployment { 
    /Downloader/DownloadActor/Router { 
     router = "round-robin" 
     nr-of-instances = 8 
    } 
} 

请让我知道我在做哪个配置错误。

我看到这post,但解决方案似乎并不确切(至少对我来说)。

回答

3

首先Downloader不是演员 - 这是演员系统名称,用于为特定演员系统创建唯一路径,例如。

[akka.tcp://[email protected]:2561/user/DownloadActor/Router] 

要回答你的问题,你的部署配置中的路径不正确,你应该使用下面的配置。

akka.actor.deployment { 
    /DownloadActor/Router { 
     router = "round-robin" 
     nr-of-instances = 8 
    } 
} 

所有的演员从system在下面的例子中

val actor = system.actorOf(Props[DownloadActor], "DownloadActor") 

user监护人创建,并且是该演员的孩子直接初始化,如。请阅读supervision and monitoring文档以获取更多详细信息。