在使用 Akka actor 模型时akka.conf
配置文件有一些我不明白的地方(对于 Java,但对于 Scala 必须相同(。
例如,使用远程模块时:
我有时会看到这样的东西:
akka {
actor {
provider = "akka.remote.RemoteActorRefProvider"
}
remote {
有时:
akka {
actor {
provider = remote
}
remote {
首先,关键provider
的期望值是多少?有时是类名,有时是正义remote
顺便问一下,为什么它是remote
而不是akka.remote
考虑远程是在akka
命名空间下?
来自 reference.conf(在撰写本答案时当前(:
akka.actor {
# Either one of "local", "remote" or "cluster" or the
# FQCN of the ActorRefProvider to be used; the below is the built-in default,
# note that "remote" and "cluster" requires the akka-remote and akka-cluster
# artifacts to be on the classpath.
provider = "local"
akka.actor.provider
是在启动时解释的字符串。 这种解释是通过构造一个ProviderSelection
来实现的(见这里(。 如果提供了完全限定的类名,则使用该类名。cluster
、local
(默认值,从reference.conf
开始(和remote
分别是akka.cluster.ClusterActorRefProvider
、akka.actor.LocalActorRefProvider
和akka.remote.RemoteActorRefProvider
的同义词。