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



想象一下,我在application.conf文件中定义了一个Duration值。文档中说它可以解析Durations,但我不知道如何解析。

timeout = 60 milliseconds

我可以直接将其解析为持续时间值吗?理想情况下,我想做一些类似的事情

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

但超时是CCD_ 2。谢谢你的提示。

Play的配置确实支持Duration、FiniteDuration和其他Scala类型。使用: configuration.get[FiniteDuration]("path.to.duration") Configuration.get函数采用隐式ConfigLoader[A]。Play有很多实现,并且很容易添加其他实现。

尝试getDuration(String,TimeUnit)方法。

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

试试这样的东西:

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

这会给你一个Option[Duration];您可以获取/getOrElse以获得具体值。

您可以这样使用Duration apply方法:

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

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

timeout = 15 seconds

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

我通常有一个助手类/方法来为我做这件事,类似于这样:http://pierreandrews.net/posts/config-scala.html

最新更新