java Vert。x的Verticle JSON/YAML配置(每个环境最好)
是否有一种“合理”的方式来配置deployment options
、instances
、worker
等Vert。x
我希望能够在部署时“摆脱”DeploymentOptions
,并将其保存在JSON/YAML配置文件中。x理解——最好按“环境”来划分,就像Spring Boot一样
这就是我目前正在使用的:
class MainVerticle : AbstractVerticle() {
private val logger: Logger = LoggerFactory.getLogger(this.javaClass.name)
override fun start(future: Future<Void>) {
val config = config().getJsonObject("verticle_instances")
deploy(AuthVerticle::class.java, DeploymentOptions().setInstances(config.getInteger("auth_instances")))
deploy(HttpServerVerticle::class.java, DeploymentOptions().setConfig(config().getJsonObject("http_server_verticle"))
.setInstances(config.getInteger("http_server_instances")))
deploy(DialPadVerticle::class.java, DeploymentOptions().setConfig(config().getJsonObject("phone_verticle"))
.setWorker(true))
logger.info("Module(s) and/or verticle(s) deployment...DONE")
future.complete()
}
override fun stop(future: Future<Void>) {
logger.debug("Undeploying verticle(s)...DONE")
logger.info("Application stopped successfully. Enjoy the elevator music while we're offline...")
future.complete()
}
private fun deploy(clazz: Class<out AbstractVerticle>, options: DeploymentOptions) {
vertx.deployVerticle(clazz.name, options) { handler ->
if (handler.succeeded()) {
logger.debug("${clazz.simpleName} started successfully (deployment identifier: ${handler.result()})")
} else {
logger.error("${clazz.simpleName} deployment failed due to: ${handler.cause()}")
//stop();
}
}
}
}
。。。和config.json
{
"verticle_instances": {
"auth_instances": 3,
"http_server_instances": 6
},
"http_server_verticle": {
"hostname": "0.0.0.0",
"port": 9080,
"cert_path": "server-cert.pem",
"key_path": "server-key.pem",
"use_alpn": true,
"use_ssl": true
}
}
# 1 楼答案
据我所知,没有。但是,您可以对
config.json
和deploy(Class, DeploymentOptions)
方法进行一些调整,以获得类似的结果对于
config.json
,如果您将每个垂直体的名称更改为限定类名,并且每个垂直体都有一个deployment_options
对象,那么您可以修改deploy()
以加载选项,而无需在start
方法中指定它们。在垂直方向。x、 您可以提供默认配置选项,以便执行以下操作: