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
假设我在 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