Kotlin vertx同步配置检索行为异常
在我的多垂直应用程序中,我希望加载一次配置,然后使用koin将生成的Kotlin vertx同步配置检索行为异常,kotlin,vert.x,Kotlin,Vert.x,在我的多垂直应用程序中,我希望加载一次配置,然后使用koin将生成的JsonObject注入到每个垂直应用程序中。问题是,ConfigRetriever的行为与我期望的不一样。考虑下面的例子: class MainVerticle : AbstractVerticle() { override fun start() { val retriever = ConfigRetriever.create(vertx) val config = ConfigRetriever.get
JsonObject
注入到每个垂直应用程序中。问题是,ConfigRetriever
的行为与我期望的不一样。考虑下面的例子:
class MainVerticle : AbstractVerticle() {
override fun start() {
val retriever = ConfigRetriever.create(vertx)
val config = ConfigRetriever.getConfigAsFuture(retriever).result()
println(config)
}
}
直观地说,我希望它加载/resources/conf/config.json下的配置文件,并打印所有键/值对。它不这样做,而是打印null
。但是,如果我将第三行更改为:
val retriever = ConfigRetriever.create(Vertx.vertx())
然后用我的config.json
文件的属性填充JsonObject
Future#result
的文档说明了以下内容
手术的结果。如果操作失败,该值将为空
那么操作成功了,但没有加载配置
我真的不明白为什么我必须创建一个新的vertx
实例才能正确加载配置。这里缺少什么?当您调用Vertx.Vertx()
时,您将创建一个新的Vert.x实例。不知道为什么配置检索器工作时,你这样做,需要更多的信息。如果要了解故障,需要获取cause()
而不是result()
。result()
和cause()
都返回null。我猜未来永远不会完成。您必须在处理程序中检查未来:future.setHandler({ar->…})
我需要以阻塞方式获得未来的结果,以便使用它与koin/guice进行依赖项注入。将其视为@提供的方法的结果。异步处理程序在这里不是一个真正的选项,但可能还有其他解决方案?当您调用Vertx.Vertx()
时,您将创建一个新的Vert.x实例。不知道为什么配置检索器工作时,你这样做,需要更多的信息。如果要了解故障,需要获取cause()
而不是result()
。result()
和cause()
都返回null。我猜未来永远不会完成。您必须在处理程序中检查未来:future.setHandler({ar->…})
我需要以阻塞方式获得未来的结果,以便使用它与koin/guice进行依赖项注入。将其视为@提供的方法的结果。异步处理程序在这里不是一个真正的选项,但可能还有其他解决方案?