Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 在运行时重新加载postgres数据库配置_Scala_Akka - Fatal编程技术网

Scala 在运行时重新加载postgres数据库配置

Scala 在运行时重新加载postgres数据库配置,scala,akka,Scala,Akka,我使用的是greenplum集群,您只能向主服务器提交查询。 我在application.conf中有主节点ip。 但由于高可用性等原因,主节点的IP会切换到不同的机器 application.conf条目: database = { connectionPool = "HikariCP" dataSourceClass = "org.postgresql.ds.PGSimpleDataSource" properties = { serverName = "103.10.1

我使用的是greenplum集群,您只能向主服务器提交查询。 我在application.conf中有主节点ip。 但由于高可用性等原因,主节点的IP会切换到不同的机器

application.conf条目:

database = {
  connectionPool = "HikariCP"
  dataSourceClass = "org.postgresql.ds.PGSimpleDataSource"
  properties = {
    serverName = "103.10.11.6"
    portNumber = "5432"
    databaseName = "test"
    currentSchema = "public"
    user = "user"
    password = "user123"
  }
  numThreads = 10
}
现在可以使用以下方式加载:

val db = Database.forConfig("database")
我可以捕获ConnectionException或ping机器并识别当前主机的IP

但是,如何在配置中重写
serverName
变量并在运行时重新加载


这个设计好吗

您应该将域名而不是ip地址设置为
serverName
。此域记录必须指向主记录。
这种方法将大多数高可用性问题留在网络级别,不会泄露给应用程序代码。

不幸的是,网络团队有一些规则要求应用程序团队这样做。我提出了同样的方法,但得到了这个答案+1因为这也是我首选的方法。然后每次只需创建一个
数据库的新实例即可。当然,前一个应该正确关闭。