Building Reactive Microservicesjava
在這個章節中,咱們將會構建咱們的第一個 Vert.x 微服務,就像大多數微服務系統同樣咱們使用HTTP提供微服務,但由於系統包含多個微服務之間的交互,咱們將構建另外一個微服務系統來消費上一個微服務,而後,咱們會展現爲何這樣的設計並無徹底實現響應式微服務。最後,咱們將實現以消息爲基礎的微服務,看消息機智怎麼改良咱們的響應式。react
First Microservicesweb
在這裏,咱們會實現相同的微服務設置兩次,第一個微服務暴露一個 hello 服務,而後咱們將會調用這個服務,消費者咱們叫作 hello 消費微服務,這個小系統不只說明了服務如何送達,並且展現如何被消費。在圖Figure 3-1,微服務使用 HTTP 實現,hello 消費者微服務使用 HTTP client 調用 hello微服務。在一個實現,hello 消費者微服務使用消息來和 hello 打交道,這種差別影響着系統的響應性。瀏覽器
在以前的章節,咱們使用了兩種方式來使用 Vert.x APIs:callbacks 和 RxJava,爲了說明差別和幫助您找到您的首選方法,hello 微服務使用了回調的開發模型,然而消費者使用 RxJava 實現。微信
Implementing HTTP Microservices微服務
微服務一般以HTTP的形式暴露 API,以 HTTP 請求的方式消耗,讓咱們看看 Vert.x 怎麼實現 HTTP 間的交互,這個章節的代碼在microservices/hello-microservice-http 文件夾中。ui
Getting Started插件
建立一個 hello-microservice-http 文件夾,而後構建項目結構:設計
這個命令生成 Maven 項目結構和配置 Vert.x Maven 插件,以及增長了 vertx-web 依賴,Vert.x Web 模塊提供了基本提供了全部在Vert.x上構建現代 Web 應用的東西。router
The Verticle
打開 src/main/java/io/vertx/book/http/HelloMicroser vice.java,自動生成的代碼沒幹什麼有意思的事情,僅僅只是個開始:
如今,執行下面的 Maven 命令:
你能夠編輯這個 Verticle,一旦你點擊了保存,那麼應用將會自動編譯和重啓。
HTTP Microservice
是時候讓你的 MyVerticle類作點事情啦,咱們先器寫個 HTTP 服務,如你前面的章節同樣,你僅僅用下面的代碼就能夠了:
點了保存後,你能夠在瀏覽器打開 http://localhost:8080 地址,這段代碼建立一個8080端口的 HTTP 服務和註冊了一個 requestHandler 用來處理 HTTP 請求,就如今而言,咱們只是在 response 中寫入了 hello。
Using Routes and Parameters
許多服務的響應是經過 Web URLs,所以檢查路徑就能夠知道請求訪問的是什麼。然而,作路徑檢查請求處理程序requestHandler 實現不一樣的 actions 會變得很複雜。幸運的是,Vert.x Web 提供了 Router 註冊的機制,讓咱們重寫 start 方法,兩個 routes:
咱們建立了 Router 對象,註冊兩個 routes,第一個處理 / 下的請求,輸出 hello,第二個路徑下有個參數(:name),處理的程序將傳遞過來的值加到歡迎的返回信息中。最後,咱們改變 HTTP server 的requestHandler 來接受 router 方法。
若是你沒有中止執行 vertx:run ,你應該能夠再瀏覽器打開下面的:
http://localhost:8080—You should see hello
http://localhost:8080/vert.x—You should see hello vert.x
Producing Json
JSON 被經常使用於微服務,咱們修改以前的類來提供Json payload:
Vert.x 提供了 JsonObject 類來生成和操做 JSON 結構,若是你代碼寫的正確,那麼你能夠再瀏覽器打開以下地址:
• http://localhost:8080—You should see {"message": "hello"}
• http://localhost:8080/vert.x—You should see {"message":"hello vert.x"}
Packaging and Running
中止 vertx:run 執行能夠用 Ctrl+C和在相同的目錄下執行以下命令:
這個提供了一個 fat jar 在 target 目錄下:hello- microservice-http-1.0-SNAPSHOT.jar,Jar 包的大小還算合理(~6.3 MB),包含全部運行應用所須要的資源。
你能夠打開 http://local host:8080 地址檢查應用是否正確運行,保持這個微服務運行,下個應用將會調用。
原文地址:
https://developers.redhat.com/promotions/building-reactive-microservices-in-java/
有什麼討論的內容,能夠發我微信公衆號: