鉴于以下2位演员Downloader
和DownloadActor
,后一位演员有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,但解决方案似乎并不准确(至少对我而言)。
答案 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文档以获取更多详细信息。