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.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM