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.
Vertx的命令行的更多相关文章
- 使用Maven命令行快速创建项目骨架(archetype)
> mvn archetype:generate 接下来就会输出一些列带索引变化的archetype项可供我们选择,然后提示我们选择一个编号,可以直接回车选择默认的编号(392),然后就跟着 ...
- Cmder--Windows下命令行利器
cmder cmder是一个增强型命令行工具,不仅可以使用windows下的所有命令,更爽的是可以使用linux的命令,shell命令. 安装包 安装包链接 下载后,直接解压即用. 修改命令提示符λ为 ...
- .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门
2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高, ...
- 让 windows 下的命令行程序 cmd.exe 用起来更顺手
在 Windows 下使用 Larave 框架做开发,从 Composer 到 artisan 总是避免不了和 cmd.exe 打交道,系统默认的命令行界面却是不怎么好看,且每行显示的字符数是做了限制 ...
- 利用Node.js的Net模块实现一个命令行多人聊天室
1.net模块基本API 要使用Node.js的net模块实现一个命令行聊天室,就必须先了解NET模块的API使用.NET模块API分为两大类:Server和Socket类.工厂方法. Server类 ...
- Java程序:从命令行接收多个数字,求和并输出结果
一.设计思想:由于命令行接收的是字符串类型,因此应先将字符串类型转化为整型或其他字符型,然后利用for循环求和并输出结果 二.程序流程图: 三.源程序代码: //王荣荣 2016/9/23 ...
- Android 在Android代码中执行命令行
1.路径最好不要是自己拼写的路径/mnt/shell/emulated/0/wifidog.conf 最好是通过方法获取的路径,不然可能导致命令无效 (挂载点的原因) public static f ...
- windows下的命令行工具babun
什么是babun babun是windows上的一个第三方shell,在这个shell上面你可以使用几乎所有linux,unix上面的命令,他几乎可以取代windows的shell.用官方的题目说就是 ...
- 像黑客一样使用 Linux 命令行
前言 之前在博客园看到一篇介绍 IntelliJ IDEA 配置的文章,它里面用的是 gif 动态图片进行展示,我觉得很不错.所以在我今天以及以后的博文中,我也会尽量使用 gif 动图进行展示.制作 ...
随机推荐
- 一文教你如何使用miniconda
安装python 之前安装python包,导致了python里面的包不兼容,用管理工具卸载也下载不掉,重新安装也安装不上,没有办法只能卸掉python重装. 安装Anaconda Anaconda指的 ...
- 最强PHP防镜像代码收集,简单粗暴...你值得拥有
JS版本 <script type="text/javascript"> if(location.toString().indexOf("yuanzhumub ...
- 201800628模拟赛T2——最大土地面积
题目描述 在某块平面土地上有N个点,你可以选择其中的任意四个点,将这片土地围起来,当然,你希望这四个点围成的多边形面积最大. 输入输出格式 输入格式: 第1行一个正整数N,接下来N行,每行2个数x,y ...
- pycharm的Structure中的图标含义
1.在使用pycharm的Structure时可以看到有这些图标.图标上的字母是简写,具体含义如下在pycharm中是自动补全的变量的类别 p:parameter 参数 m:method 方法 ...
- C# 委托的本质
它本质是一个方法的容器 委托 只是 一件衣服, 在所有将委托做参数的地方 ,首先想到的是放一个对应的方法进来.
- 实验三:Linux进程管理(HDU)
2.设计内容 把下面的几个网址的内容看懂,关于Linux的通信机制就会有个基本的了解了,后面的这几个代码也应该可以看得懂了. 管道通信:https://blog.csdn.net/ljianhui/a ...
- Java代理(静态代理、JDK动态代理、CGLIB动态代理)
Java中代理有静态代理和动态代理.静态代理的代理关系在编译时就确定了,而动态代理的代理关系是在运行期确定的.静态代理实现简单,适合于代理类较少且确定的情况,而动态代理则给我们提供了更大的灵活性. J ...
- TensorFlow常用激活函数及其特点和用法(6种)详解
http://c.biancheng.net/view/1911.html 每个神经元都必须有激活函数.它们为神经元提供了模拟复杂非线性数据集所必需的非线性特性.该函数取所有输入的加权和,进而生成一个 ...
- helm repository 相关
chart repo是一个可用来存储index.yaml与打包的chart文件的HTTP server.当要分享chart时,需要上传chart文件到chart仓库,任何一个能够提供yaml与tar文 ...
- CDN惹的祸:记一次使用OSS设置跨域资源共享(CORS)不生效的问题
原文: https://www.lastupdate.net/4669.html 昨天H5组的开发反馈了一个问题,说浏览器收不到跨域的配置,提示:Failed to load https://nnmj ...