2016-01-09 31 views
0

想象一下,我在我的application.conf文件中定义了持续时间值。 documentation表示它可以解析持续时间,但我看不到如何。Scala + Play,如何从HOCON配置获取持续时间?

timeout = 60 milliseconds 

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

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

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

+0

Typesafe的'Config'类读取HOCON文件并提供'getDuration(path:String):Duration'方法。我想你必须做所有的工作,找出合适的地方来阅读配置文件(如Play的文档中所述)(https://www.playframework.com/documentation/2.5.x/ProductionConfiguration) –

回答

0

尝试getDuration(字符串,TIMEUNIT)方法。

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

我不认为Play'Configuration'类存在这种方法。它存在于Typesafe的'Config'类中,但它返回一个长整型。我认为问题是得到一个'持续时间'返回类型。所以一个答案就是在Typesafe的'Config'类中使用'.getDuration(path:String):Duration'方法。 –

0

尝试这样:

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

这会给你一个Option[Duration];你可以通过get/getOrElse来获得具体的价值。

1

Play的配置确实支持Duration,FiniteDuration和其他Scala类型。使用: configuration.get[FiniteDuration]("path.to.duration") Configuration.get功能需要隐含ConfigLoader[A]。玩带有lot of implementations和容易添加额外的。

相关问题