0

在我的 test.conf 文件中,我有以下配置

akka {
  actor {
    provider = "akka.cluster.ClusterActorRefProvider"

    serializers {
       java = "akka.serialization.JavaSerializer"
    }

    serialization-bindings {
        "java.io.Serializable" = "kyro"
    }
  }
}

我正在尝试将此配置放在 test.properties 文件中

akka.actor.provider=akka.cluster.ClusterActorRefProvider
akka.actor.serializers.java=akka.serialization.JavaSerializer
akka.actor.serialization-bindings."java.io.Serializable" = kryo

当我使用 test.conf 文件创建和 AKKA ActorSystem 时,它工作正常,但是当我使用 test.propeties 文件创建 ActorSytem 时

System.setProperty("config.file", "test.properties");
Config config = ConfigFactory.load();
ActorSystem testactor = ActorSystem.create("testactor", config);

在这里,我得到了 java ClassNotFoundExcpetion:“java

我看到我将 akka.actor.serialization-bindings."java.io.Serializable" 放入 test.properties 文件的方式不正确。请建议将其放入 .properties 文件的正确方法。

4

2 回答 2

-1

我知道您需要一个属性文件,尽管我认为您不能以这种方式声明密钥,并且还记得您手中有一个强大的配置工具。

我建议将所有默认应用程序配置放入reference.conf并覆盖使用,application.conf因此您只需application.conf在类路径上放置一个特定的用于测试test/resources.

这可能是你的java/resources/reference.conf

akka {
 actor {
  provider = "akka.cluster.ClusterActorRefProvider"

   serializers {
    java = "akka.serialization.JavaSerializer"
   }

  serialization-bindings {
   "java.io.Serializable" = "kyro"
  }
 }
}

然后你把它放在test/resources/application.conf或任何你需要的东西上进行测试:

akka {
  serialization-bindings {
   "java.io.Serializable" = "java"
  }
} 

当您调用时,ConfigFactory.load()所有文件将合并到一个配置中。

我建议阅读有关如何配置和覆盖配置的更多信息:http: //doc.akka.io/docs/akka/current/general/configuration.html#Configuring_multiple_ActorSystem

于 2017-04-21T08:07:23.943 回答
-1

Typesafe 配置库允许加载属性对象和组合配置,因此您可以:

// or load it from a file using whatever logic you want
Properties properties = new Properties();
properties.setProperty("some.setting", "a-value");

Config propConfig = ConfigFactory.parseProperties(properties);
Config actualConfig = propConfig.withFallback(ConfigFactory.load("test.conf"));
ActorSystem.create("name", actualConfig);

更新:正如 Leo 在评论中指出的那样,如果你想重写akka.actor.serialization-bindings."java.io.‌​Serializable"那确实是不可能的Properties,据我所知,因为引号。

于 2017-04-26T06:57:02.150 回答