配置 Akka 路由器时出错
Error Configuring Akka Router
给定以下 2 个演员,Downloader
和 DownloadActor
,后一个演员有一个 router
,名为 Router
。
但是,当我运行 sbt run
时,出现以下运行时异常:
Caused by: akka.ConfigurationException: Configuration missing for
router [akka://Downloader/user/DownloadActor/Router] in
'akka.actor.deployment' section.
这是我的代码:
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,但解决方案似乎并不准确(至少对我而言)。
首先 Downloader
不是演员 - 这是演员系统名称,用于为特定演员系统创建唯一路径,例如。
[akka.tcp://Downloader@127.0.0.1:2561/user/DownloadActor/Router]
为了回答您的问题,您的部署配置中的路径不正确,您应该使用以下配置。
akka.actor.deployment {
/DownloadActor/Router {
router = "round-robin"
nr-of-instances = 8
}
}
所有 actor 直接从 system
初始化,如下例
val actor = system.actorOf(Props[DownloadActor], "DownloadActor")
是在 user
监护人下创建的,是该演员的 children。请阅读supervision and monitoring 文档以获取更多详细信息。
给定以下 2 个演员,Downloader
和 DownloadActor
,后一个演员有一个 router
,名为 Router
。
但是,当我运行 sbt run
时,出现以下运行时异常:
Caused by: akka.ConfigurationException: Configuration missing for router [akka://Downloader/user/DownloadActor/Router] in 'akka.actor.deployment' section.
这是我的代码:
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,但解决方案似乎并不准确(至少对我而言)。
首先 Downloader
不是演员 - 这是演员系统名称,用于为特定演员系统创建唯一路径,例如。
[akka.tcp://Downloader@127.0.0.1:2561/user/DownloadActor/Router]
为了回答您的问题,您的部署配置中的路径不正确,您应该使用以下配置。
akka.actor.deployment {
/DownloadActor/Router {
router = "round-robin"
nr-of-instances = 8
}
}
所有 actor 直接从 system
初始化,如下例
val actor = system.actorOf(Props[DownloadActor], "DownloadActor")
是在 user
监护人下创建的,是该演员的 children。请阅读supervision and monitoring 文档以获取更多详细信息。