Message-Based Microservicesjava
讓咱們從新實現 hello microservice,此次咱們用 event bus 取代 HTTP 服務來接受請求,該 microservice對消息做出響應。react
Project Creation瀏覽器
讓咱們建立一個新的項目,此次咱們將加入 Innispan 依賴,一個內存數據系統被用來管理集羣:服務器
一旦建立好了,咱們可能須要配置 Infinispan 來搭建集羣。默認配置使用 廣播(multicast)來發現節點。若是你的網絡支持廣播(multicast),將會很好,另外一面,須要檢查代碼目錄resource/cluster。微信
Writing the Message-Driven Verticle網絡
編輯 src/main/java/io/vertx/book/message/HelloMicroser vice.java 文件和更新 start 方法:ui
這段代碼從 eventbus 註冊一個消費者地址 hello,當一個消息接受的時候,它會響應它。根據傳入消息是否有空體,咱們計算不一樣的響應。在以前章節的例子中沒咱們發送一個 JSON 對象。你可能疑惑爲何咱們在服務端返回 JSON 格式。很快你將會看到緣由,verticle 寫好後沒,咱們將之運行起來:spa
-cluster 參數告訴 Vert.x 以集羣的模式啓動。.net
如今咱們寫一個 microservice 來消費這個服務。對象
Initiating Message-Based Interactions
在這節中,咱們建立另外一個 microservice 來調用 hello microservice ,經過發送消息到 hello 地址而且獲取一個迴應。microservice 重現實現和以前同樣的邏輯,調用兩次(once with Luke and once with Leia)
如舊,咱們建立一個新的項目:
這裏咱們將會添加 Vert.x RxJava 支持,獲取 RXified APIs 的優點,若是你在前的部門更新了Infinispan 配置,那麼你須要複製到新的項目。
如今編輯io.vertx.book.message.HelloConsumerMicroservice,既然咱們決定使用 Rxjava,將導入部分改爲匹配 io.vertx.rxjava.core.AbstractVerticle,而後從新實現的 start 方法以下:
這段代碼換個以前章節的代碼很相似,替換調 WebClient 響應 HTTP服務。咱們將使用 Event Bus 來發送消息到 hello 地址,提取回復的主體。咱們使用ZIP操做檢索兩個響應並構建最終結果。在 subscibe 方法中,咱們將最終結果打印到控制檯或打印堆棧跟蹤。
讓咱們把這個與HTTP服務器結合起來。當收到HTTP請求時,咱們會調用hello服務兩次,並將生成的結果做爲響應返回。
最後的代碼只是把與 event bus 交互的塞進 requestHandler 和處理 HTTP 響應。在發生故障時,咱們返回一個包含錯誤消息的JSON對象。
若是你運行的方式以 vertx:run -Dvertx.runArgs="-cluster -Djava.net.preferIPv4Stack=true" 啓動,你能夠在瀏覽器輸入http://localhost:8082,你將能夠看到以下:
原文地址:
https://developers.redhat.com/promotions/building-reactive-microservices-in-java/
有什麼討論的內容,能夠加我微信公衆號: