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

时间:2018-10-14 13:41:21

标签: scala akka

我正在使用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变量并在运行时重新加载。

这是一个好的设计吗?

1 个答案:

答案 0 :(得分:1)

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