akka 用户交互程序报错_将akka-http应用程序部署到Cloud Foundry

akka 用户交互程序报错

前面的文章中,我已经走了过来的步骤来部署一个简单的阿卡-HTTP应用到Cloud Foundry。 要点是,只要有一种方法可以创建可运行的fat(uber)jar,那么部署就非常简单– Cloud Foundry的Java buildpack可以占用并整理一切以使其在云中运行铸造环境。

在这里,我想讨论一个稍微复杂的场景-这是应用程序对MySQL数据库具有外部数据库依赖关系的地方。

在本地环境中,数据库的详细信息将使用通常如下指定的配置来解析:

sampledb = {
  url = "jdbc:mysql://localhost:3306/mydb?useSSL=false"
  user = "myuser"
  password = "mypass"
}

如果Mysql数据库不在Cloud Foundry环境中,则指定数据库配置的这种方法将继续很好地工作。 但是,如果服务驻留在
Cloud Foundry市场 ,然后在与Application绑定时动态创建服务的详细信息。

为了使它更具体一点,在我本地的PCF Dev中 ,我有一个提供“ p-mysql”服务的市场。

如果我要以此创建“服务实例”:

并将此实例绑定到应用程序:

从本质上讲,此时发生的是该应用程序具有一个名为VCAP_SERVICES的环境变量,并且必须对其进行解析以获取db凭据。 当前方案中的VCAP_SERVICES看起来像这样:

{
  "p-mysql": [
   {
    "credentials": {
     "hostname": "mysql-broker.local.pcfdev.io",
     "jdbcUrl": "jdbc:mysql://mysql-broker.local.pcfdev.io:3306/myinstance?user=user\u0026password=pwd",
     "name": "myinstance",
     "password": "pwd",
     "port": 3306,
     "uri": "mysql://user:pwd@mysql-broker.local.pcfdev.io:3306/myinstance?reconnect=true",
     "username": "user"
    },
    "label": "p-mysql",
    "name": "mydb",
    "plan": "512mb",
    "provider": null,
    "syslog_drain_url": null,
    "tags": [
     "mysql"
    ]
   }
  ]
 }

使用Typesafe config可以很容易地对此进行解析,示例代码(当然是hacky)如下所示:

def getConfigFor(serviceType: String, name: String): Config = {
    val vcapServices = env("VCAP_SERVICES")
    val rootConfig = ConfigFactory.parseString(vcapServices)
    val configs = rootConfig.getConfigList(serviceType).asScala
      .filter(_.getString("name") == name)
      .map(instance => instance.getConfig("credentials"))

    if (configs.length > 0) configs.head
    else ConfigFactory.empty()
  }

并调用了以下方式:

val dbConfig = cfServicesHelper.getConfigFor("p-mysql", "mydb")

这将动态解析mysql的凭据,并允许应用程序连接到数据库。

一种更简单的方法可能是在我的github存储库中查看示例代码-https://github.com/bijukunjummen/sample-akka-http-rest。

翻译自: https://www.javacodegeeks.com/2017/01/deploying-akka-http-app-cloud-foundry-2.html

akka 用户交互程序报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值