XXXXX
C/C++
XXXXX
C#/.net
XXXXX
js
java
java
开发导航 开发导航 www.endv.cn
天云

Vertx的命令行

 

 IntelliJ----创建一个运行配置(Application), 用io.vertx.core.Launcher类作为主类,在程序参数输入:run your-verticle-fully-qualified-name--redeploy=**/*.class --launcher-class=io.vertx.core.Launcher。为了触发重布署,需要显示生成项目或者模块(Build menu->Make project)。

 run your-verticle-fully-qualified-name--redeploy=**/*.class --launcher-class=io.vertx.core.Launcher

Vertx的命令行

vertx命令被用于命令行与Vert.x进行交互。这是在运行Vert.x的 verticle的主要方式。为了运行命令行,需要下载并安装Vert.x发行版,并添加安装路径中的bin路径到PATH环境变量。同时必须确认安装了Java8的JDK,并在命令行可执行。

注意:需要JDK是为了支持运行时编译java代码。

 运行Verticles

可以使用vertx run命令从命令行直接运行一个原生的Vert.x veticles。有一两个run命令的例子。

vertx run my-verticle.js                                 (1)

vertx run my-verticle.groovy                             (2)

vertx run my-verticle.rb                                 (3)

 vertx run io.vertx.example.MyVerticle                    (4)

vertx run io.vertx.example.MVerticle -cpmy-verticle.jar (5)

 vertx run MyVerticle.java

 1. 布署一个JavaScript verticle

2. 布署一个Groovy verticle

3. 布署一个Ruby veticle

4. 布署一个已经编译过的java verticle,根类路径是当前目录。

5. 布署一个打成jar包的verticle,jar包必须在类路径中。

6. 编译Java源代码并布署。、

如你所见,在Java例子中,名称可以是安整合规则的Verticle类名,也可以直接指Java源代码文件,Vert.x会为你编译它。

也可给在verticle名称前添加实现语言前缀。例如,如果Verticle是一个编译的Groovy类,可以添加groovy:前缀,以便于Vert.x知道,这是一个Groovy类而不是一个Java类。

vertx rungroovy:io.vertx.example.MyGroovyVerticle

vertx run命令可以有一些可选参数,他们是:

·          -conf<config_file> 向verticle提供一些配置。config_file是一个包含JSON对象的文本文件的名字。当JSON对象代表了verticle对象的配置,这是可选的。

·          -cp<path> - 这是寻找verticle的路径并且也是verticle要使用的一些其他资源的路径。默认的“.”(当前路径)。如果verticle引用了其他脚本,类,或者其他资源(如jar文件),请确保它们在此路径下。此路径可以包含多个路径实体,有:或者;分隔开,具体什么分隔符依赖于操作系统。每个路径 实体可以是绝对路径也可以是档对于包含脚本的路径,或者绝对,和相对的jar/zip文件的文件名。一个路径的例子可能是这样-cpclasses:lib/otherscripts:jars/myjar.jar:jars/otherjar.jar。总是这样使用路径引用一些verticle需要的资源。不要将这些资源放在系统类路径中,因为这样会在布署的verticle之间造成隔离问题。

·          -instance<instance> - 初始veticle实例的数目。每个verticle实例是一个严格的单线程,所以为在所有能获得的运算核心上伸缩应用,应该布署多个实例。如果忽视这个参数,verticle单实例将会部署。

·          -worker—此选项决定是verticle是否是一个工作verticle。

·          -cluster-port如果cluster选项被设置,此参数决哪个端口通为与其他Vert.x实例进行通迅。默认是0,表明随机选择空端口。通常不需要设置此参数除非你真得需要绑定到指定端口。

·          -cluster-host如果集群选项被指定,这参数决定那个主机地址被用于与其他Vert.x实例进行通迅。默认是从可用的地址中选择一个。如果有多个网卡,就需要使用指定的,就在这里设置。

·          -ha 如果设置verticle被布署成高可用。参考相关章节获取更多信息。

·          -quorum 与-ha参数联合使用。此参数指定集群中最小节点数,这些节点为了激活高可用布署ID。默认是0。

·          -hagroup与-ha参数联合使用。指定此节点要加入的HA组。一个集群上可能有多个HA组。节点在失效时,由同组中的其他节点备份。默认值是` __DEFAULT__`

也可以使用   -Dkey=value设置系统属性

这里有一些更多的例子,用默认的设置运行javascript的verticleserver.js。

vertx run server.js

运行预编译java verticle 100个实例,并指定类路径:

vertx run com.acme.MyVerticle -cp"classes:lib/myjar.jar" -instances 10

从源文件运行java verticle 10个实例

vertx run MyVerticle.java -instances 10

运行ruby工作verticle20个实例

vertx run order_worker.rb -instances 20 –worker

在同一个机器上运行两个Javascript实例,并让将其集群起来

vertx run handler.js -cluster

vertx run sender.js –cluster

传入一些参数运行一个Ruby verticle

vertx run my_verticle.rb -conf my_verticle.conf

my_verticle.conf可以包含像下面的内容:

{

 "name": "foo",

 "num_widgets": 46

}

通过内核API,在verticle内部,可以获取配置。在使用vert.x高可用特性时,可能想创建一个裸vert.x实例。此实例在启动后,不布署任何verticles。但是如果集群中的节点崩溃,将会接收一个verticle。为了创建裸实例,启动如下:
vertx –ha

取决于集群配置,有可能必须添加 cluster-host和cluster-port参数。

 从一个fat jar中执行Vert.x应用

一个fat jar包是一个内嵌了依赖的可执行jar包。这就意味着,你不必预选在机器上安装Vert.x,然后执行jar。与一些可执行java jar包类似,它可以这样被执行:

java -jar my-application-fat.jar

关于这个,Vert.x没有什么需要设置的,一些应用程就可以这样做。也可以创建主程序并在mainfest中进行设置,但,建议编写自己的verticle代码,并用Vert.x的Launcher(io.vertx.core.Launcher)类作为你的主类。这个主与与命令行运行Vert.x是相同的主类,因此允许指定命令行参数,如 instances让应用伸缩更容易。

为了用fat jar方式布署verticle,必须有一个manifest:

·          Main-Class设置为 io.vertx.core.Launcher

·          Main-Verticle指定主verticle(完整严格的类名或脚本文件名

也可使用传递给vertx run命令的通用的命令行参数。

java -jar my-verticle-fat.jar -cluster -confmyconf.json

java -jar my-verticle-fat.jar -cluster -confmyconf.json -cp path/to/dir/conf/cluster_xml

 默认的,一个fat jar执行run命令。

 显示Vert.x版本

用下面命令显示Vert.x版本:

vertx version

 其他命令

vertx命令行和Launcher都提供除了run和version命令之外的其他命令,可以用下面代码创建 一个裸实例:

vertx bare

# or

java -jar my-verticle-fat.jar bare

可以在后台启动一个应用:

java -jar my-verticle-fat.jar start-Dvertx-id=my-app-name

 

如果 my-app-name没有设置,一个随机产生一个ID,并输出到命令提示。可以将run选项传递给start命令:

java -jar my-verticle-fat.jar start-Dvertx-id=my-app-name –cluster

 

一旦后台加载,可用stop命令停止:

java -jar my-verticle-fat.jar stop my-app-name

 

也可以列出后台运行的Vert.x应用:

java -jar my-verticle-fat.jar list

 

start,stop和list命令也可以从vertx工具中找到。start命令支持几个选项:值

·          vertx-id:应用ID,没有设定,使用随机UUID

·          java-opts:JVM选项,如果未设定,使用JAVA_OPTS变量

·          redirect-output:重定向启动进程输出和错误流到父进程流。

如果选项值包含了空格,一定要用双引号引起来

因为start命令起动一个新进程,传入JVM选项不会传播。所有必须使用‘java-opts’配置JVM。如果设置了CLASSPATH环境变量,请确保包含所有的需要的jar包(vert-xore,应用jar及所有依赖项)

命令集合是可扩展的,参考扩展vert.x加载器小节。

 热布署

在文件改变时自动重新布署应用,在开发应用时是非常方便的。vertx命令行工具和更常用的Launcher 类都提供此特性。下面有一些例子:

vertx run MyVerticle.groovy--redeploy="**/*.groovy" --launcher-class=io.vertx.core.Launcher

vertx run MyVerticle.groovy--redeploy="**/*.groovy,**/*.rb" --launcher-class=io.vertx.core.Launcher

java io.vertx.core.Launcher runorg.acme.MyVerticle --redeploy="**/*.class"  --launcher-class=io.vertx.core

.Launcher -cp ...

重布署实现如下。首先,应用程序以后台应用加载(用start命令)。匹配文件变化,进程被停止并且应用重新启动。这样可以避免泄漏。

为了启用执布署,向run命令添加—redeploy选项。--redeploy指定要监视的文件集合。这个文件集合使用Ant风格模式(用**,*和?)匹配。你可以指通过用”,”号分隔指定多个集合。模式是相对于当前工作目录的。

传递给run命令的参数被传给了应用。可用—java-opts设置JVM选项。

--launcher-class选项指定应用启动的主类。通常是Launcher,但也可以使用自己的主类。

在IDE中也可以使用重布署的特性:

·          Eclipse---创建一个运行配置(Run configuration),用io.vertx.core.Launcher类作为主类。在程序参数区域(在参数标签),输入run your-verticle-fully-qualified-name--redeploy=**/*.java --launcher-class=io.vertx.core.Launcher。也可以加入其他参数。在保存文件时,Eclipse会增量编译修改的文件,重新布署平滑工作。

·          IntelliJ----创建一个运行配置(Application), 用io.vertx.core.Launcher类作为主类,在程序参数输入:run your-verticle-fully-qualified-name--redeploy=**/*.class --launcher-class=io.vertx.core.Launcher。为了触发重布署,需要显示生成项目或者模块(Build menu->Make project)。

为了调试你的应用,创建你的运行配置作为远程应用并用—java-opts配置调试器。然而,不要忘记在每次重新布署一个新进程时重新插入调试器。

也可以在布署周期的构建进程下钩子。

java -jar target/my-fat-jar.jar--redeploy="**/*.java" --on-redeploy="mvn package"

java -jar build/libs/my-fat-jar.jar--redeploy="src/**/*.java" --on-redeploy='./gradlew shadowJar'

on-redeploy选项指定一个在应用关闭或应用重启后调用的命令,所以能钩信你的构建工具,如果更新一些运行时资源。例如启动gulp或者grunt更新你的资源。

重新布署特性支持下面设置:

·          redeploy-scan-period:文件系统检查周期,单位毫秒,默认250ms

·          redeploy-grace-period:在两重布署之间的等待时间默认是1000ms,单位毫秒

redeploy-termination-period:在停止应用之后启动用户命令之前的等待时间量。这在Windows上是有用的,因为进程不是立既被kill。单位毫秒,默认值为0ms.

posted @ 2019-07-29 17:19  Endv  阅读(1540)  评论(0编辑  收藏  举报