java - AKKA .conf 文件配置到 .properties 文件

标签 java akka actor properties-file hocon

在我的 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

我发现我在 test.properties 文件中放置 akka.actor.serialization-bindings."java.io.Serialized"的方式不正确。请建议将其放入 .properties 文件中的正确方法。

最佳答案

我知道您想要一个属性文件,但我认为您不能以这种方式声明 key ,并且还请记住您手中有一个强大的配置工具。

我建议将所有默认应用程序配置放入 reference.conf 中,并使用 application.conf 进行覆盖,因此您只需删除特定的应用程序即可。类路径上的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

关于java - AKKA .conf 文件配置到 .properties 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43517113/

相关文章:

java - 如何在服务器套接字端检索客户端的 IP 和端口?

java - akka 记录死信 - 为什么是 INFO?我希望它是错误

akka - Akka 中的状态 Actor

scala - Akka Scala Actor 中的死信

java - java中的数组,带有随机数

java - 我需要在 Jtree 中添加 "right click popup "选项

java - 使用 Spring Jdbc 模板面对嵌套 beans 查询

docker - Docker + Alpine Linux上的Akka 2.5分布式数据

scala - Akka Actor "ask"和 "Await"带有 TimeoutException

scala - 在Scala中可以启动多少个actor?