Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin vertx同步配置检索行为异常_Kotlin_Vert.x - Fatal编程技术网

Kotlin vertx同步配置检索行为异常

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

在我的多垂直应用程序中,我希望加载一次配置,然后使用koin将生成的
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进行依赖项注入。将其视为
@提供的
方法的结果。异步处理程序在这里不是一个真正的选项,但可能还有其他解决方案?