使用配置文件

时间:2018-03-14 10:40:02

标签: json configuration-files high-availability vert.x

如何编写json配置文件以动态地在vertx中部署Verticle?

2 个答案:

答案 0 :(得分:2)

无耻的插件,我为此写了一个库:https://github.com/jponge/vertx-boot

它适用于HOCON,它是JSON的超集。 您可以在HOCON中编写配置文件,其中可以使用Java属性,环境变量,备用配置文件等覆盖值,并且库提供了一个主Verticle ,它可以旋转所有声明的Verticle。

是否符合您的要求?

答案 1 :(得分:0)

我将如何处理此案例将利用Vertx Config。我会有一个初始Verticle来检索配置,然后我会从配置中提取你想要部署的类名。

Kotlin示例

package com.example

import io.vertx.config.ConfigRetriever
import io.vertx.config.ConfigRetriever.create
import io.vertx.config.ConfigStoreOptions
import io.vertx.core.*
import io.vertx.core.json.JsonArray
import io.vertx.core.json.JsonObject
import io.vertx.core.logging.Logger
import io.vertx.core.logging.LoggerFactory
import io.vertx.kotlin.config.ConfigRetrieverOptions

class EntryVerticle : AbstractVerticle()
{
val log: Logger = LoggerFactory.getLogger(EntryVerticle::class.simpleName)

override fun start(startFuture: Future<Void>?) {
    log.info("Started!!")
    val retrieverOptions = ConfigRetrieverOptions()

    //FYI you need to verify that the file is there otherwise this app won't launch.
    //Too much for this example
    val fileConfig = ConfigStoreOptions()
    fileConfig.setType("file").setFormat("json").config = JsonObject().put("path", "/app.json")
    retrieverOptions.addStore(fileConfig)

    val retriever = create(vertx, retrieverOptions)

    retriever.getConfig { config ->

        if(config.succeeded()) {

            val verticles = if (config.result().containsKey("verticles"))
            {
                config.result().getJsonArray("verticles")
            }
            else JsonArray()
            //you would also need to verify this is a string.
            verticles.forEach{className: Any ->
                //example value "com.example.HelloWorldVerticle 
                //full class name
                vertx.deployVerticle(className as String)
            }
            }

    }

    super.start(startFuture)
}
}

这有点像袖口,但我知道你可以用它们的全名创建Verticle。

除了文件系统之外,您还可以通过其他几种方式获取配置。它在上面链接的文档!!