我试图在本地和Heroku上启动一个vert.x示例(使用Procfile):
java -Dhttp.port=$PORT -jar myapp.jar
我觉得属性(http.port)没有设置,因此我的程序无法访问。
使用System.getenv()读取PORT环境变量有效,但不是“最佳实践”。
为什么呢?我能做什么? OVE
答案 0 :(得分:0)
正如@dpr指出ConfigRetriever是可行的方法。
这是我最终做的事情:
// Get the system property store (type = sys)
val sysPropsStore = ConfigStoreOptions().setType("sys")
// Add system property store to the config retriever options
val options = ConfigRetrieverOptions().addStore(sysPropsStore)
// And create a ConfigRetriever
val retriever = ConfigRetriever.create(vertx, options)
// Set the default port
var httpPort: Int = 8080
retriever.getConfig { ar ->
if (ar.failed()) {
// Failed to retrieve the configuration
} else {
val config = ar.result()
if (config.containsKey("http.port"))
httpPort = config.getInteger("http.port")
}
}
答案 1 :(得分:0)
最好的方法是定义一个json文件并在其中添加所有与配置相关的vertx。
在启动应用程序时将config.json作为参数传递。
以下是示例:
Config.json文件
{
"port": 8090
// you can add other stuff over here
}
在运行应用程序时将config.json作为参数传递
java -jar myapp.jar --conf = / config.json的路径
因此,您可以在主Verticle中读取此json文件
public class MainVerticle extends AbstractVerticle {
@Override
public void start(Future<Void> startFuture) throws Exception {
JsonObject data = this.config();
// read port and other configuration related stuff from JsonObject
}
}
我希望这会对你有所帮助:)