Scala + Play,如何从 HOCON 配置中获取持续时间?

Scala + Play, how to get a duration from the HOCON configuration?

假设我在 application.conf 文件中定义了一个 Duration 值。 documentation 说它可以解析持续时间,但我看不出如何解析。

timeout = 60 milliseconds

我可以直接将它解析为持续时间值吗?理想情况下,我想做这样的事情

val timeout = current.configuration.getMilliseconds("timeout")
(myActor ? GiveMeSomething)(timeout).mapTo[...]

但超时是 Option[Long]。感谢您的任何提示。

我不相信你可以直接将它解析为持续时间值。

我通常有一个帮手 class/method 帮我做这件事,类似于:http://pierreandrews.net/posts/config-scala.html

试试 getDuration(String, TimeUnit) 方法。

val timeout = config.getDuration("timeout", TimeUnit.MILLISECONDS)

尝试这样的事情:

import scala.concurrent.duration._
config.getMilliseconds("timeout").map(_.milliseconds)

那会给你一个 Option[Duration];你可以 get/getOrElse 得到一个具体的值。

Play 的配置支持 Duration、FiniteDuration 和其他 Scala 类型。采用: configuration.get[FiniteDuration]("path.to.duration") Configuration.get 函数采用隐式 ConfigLoader[A]。 Play 自带一个 lot of implementations 并且很容易添加额外的。

您可以这样使用持续时间应用方法:

Duration.apply(configuration.get[String]("timeout"))

然后在配置中你会有这样的东西:

timeout = 15 seconds