配置Akka路由器时出错

时间:2015-01-08 05:21:47

标签: scala akka

鉴于以下2位演员DownloaderDownloadActor,后一位演员有router,名为Router

但是,当我运行sbt run时,我得到以下运行时异常:

  

引起:akka.ConfigurationException:缺少配置   路由器[akka:// Downloader / user / DownloadActor / Router] in   ' 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,但解决方案似乎并不准确(至少对我而言)。

1 个答案:

答案 0 :(得分:3)

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

[akka.tcp://Downloader@127.0.0.1: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文档以获取更多详细信息。