Let’s Start Coding!java
是到了處理髒活的時候了,咱們將會使用 Apache Maven 和 Vert.x Maven 插件來開發咱們的項目,然而,你也能夠選擇任何其餘的構建工具(Gradle,Apache Maven 的其餘包插件,或 Apache Ant),你還能夠看到不一樣的例子在(packaging-examples directory),這個章節看到的代碼在 hello-vertx 文件夾中。react
Project Creationweb
建立一個 my-first-vertx-app 文件夾:編程
而後執行下面的命令:瀏覽器
這個命令生成 Maven 項目架構,配置vertx-maven-plugin,而且建立了一個 verticle 類(io.vertx.sam ple.MyFirstVerticle),固然它沒有作任何事情。服務器
Write Your First Verticle微信
如今開始編寫你的第一個 verticle ,修改 src/main/java/io/vertx/sample/MyFirstVerticle.java 文件,加上一下內容:架構
運行這個應用,載入:併發
若是一切正常,你將會在瀏覽器的http://localhost:8080地址下看到應用,vertx:run 命令運行 Vert.x 應用而且能夠觀察代碼的改變。所以,若是你編輯源代碼,應用將會自動編譯並重啓。app
讓咱們看一下應用的輸出:
看到這個請求被 event loop 0 處理,你能夠嘗試發送更多的請求,這些請求將會被同一個 event loop 處理,增強了 Vert.x 的併發模型,點擊 Ctrl+C 中止執行。
Using RxJava
在這個觀點下,咱們看一下 Vert.x 爲 RxJava 提供了支持更好地理解它怎麼工做的,在你的 pom.xml 文件中,咱們加入如下依賴:
接下來,改變 <vertx.verticle> 屬性到 io.vertx.sam ple.MyFirstRXVerticle ,這個屬性告訴 Vert.x Maven 插件哪個 verticle 是應用的 entry point 。建立新的 verticle 類(io.vertx.sample.MyFirstRXVerticle):
Vert.x APIs 包中提供的 RxJava 變量與 rxjava 取相同的名字,RxJava 方法以 rx 做爲前綴,例如 rxListen 。此外,API是加強方法提供可觀察的對象,你能夠訂閱接收數據。
Packaging Your Application as a Fat Jar
Vert.x Maven 插件將應用打包成一個 jar 包,一旦打包好,你能夠簡單的用 java -jar <name>.jar 啓動應用:
應用起來後,監聽相應的端口,使用 Ctrl+C 關閉。
做爲一個開放式的工具集,Vert.x 不推薦一個包去包另外一個--你可使用你喜歡的包裝模式。例如,你可使用 fat jars ,在一個特定目錄放包的信息用於訪問,或者打包成一個 war而後編程啓動Vert.x。
在這個章節中,咱們使用 fat jars ,JAR嵌入應用程序中,還有資源,全部的依賴。這個包含 Vert.x ,你使用的 Vert.x 組件和依賴,這使你更容易理解應用的啓動,依賴順序和日誌。更重要的是這減小了在生產環境的移動次數(moving piece),你不用將應用程序部署到現有的應用程序服務器,一旦打包到 fat jar 中,應用只要考慮 java -jar <name.jar> 就行了,Vert.x Maven 插件爲你構建了一個 flat jar,但你也可使用其餘的 maven 插件,例如 maven-shader-plugin。
Logging, Monitoring, and Other Production Elements
打包成 fat jar 對微服務和其餘類型的應用來講是一種很好的打包模型,以簡化了部署和啓動。但咱們的特性一般由應用程序提供,怎麼肯定生產環境已經準好?典型地,咱們但願能夠輸出和收集日誌,監控應用,推送外部配置,健康檢查等等。
不用操心--Vert.x 提供了這些特性,由於 Vert.x 功能是比較寬泛的,提供了多種能夠選擇,能夠選擇使用或者使用你本身的實現。例如日誌,Vert.x 並無要求使用一種日誌框架,容許你使用任何一種你想用的日誌模型,例如Apache Log4J 1 or 2, SLF4J, or even JUL (the JDK logging API)。若是你對 Vert.x 自身的消息日誌,內置 Vert.x logging 能夠由其餘的日誌框架配置。監控 Vert.x 應用和這個 JMX 已經幫咱們作好了,Vert.x Dropwizard Metric 模塊提供了 JMX 方法。你也能夠選擇將這些指標來監控服務器,例如Prometheus (https://prometheus.io/)或者CloudForms (https://www.redhat.com/en/ technologies/management/cloudforms)
Summary
在這個章節中,咱們學習了什麼是響應式服務和 Vert.x ,你也建立了你的第一個 Vert.x 應用 。這一章不是一個全面的指導,只是提供了一個快速的主要概念的介紹。若是你想進一步理解這些主題,你能夠下面瞭解的資源:
Reactive programming vs. Reactive systems
The Reactive Manifesto
RxJava website
Reactive Programming with RxJava
The Vert.x website
原文地址:
https://developers.redhat.com/promotions/building-reactive-microservices-in-java/
有什麼討論的內容,能夠發我微信公衆號: