在微服務環境中,每一個服務負責向其餘協做者提供功能或服務。若是咱們但願擴展「HelloWorld」微服務,咱們將須要建立一個可使用Drop嚮導的REST客戶端功能調用的服務。就像咱們爲SpringBoot微服務所作的那樣,咱們將從隨書附帶的源代碼中利用後端服務。交互看起來相似於:java
若是您查看這本書的源代碼,咱們將看到一個名爲Backend的Maven模塊,它包含一個很是簡單的HTTPservlet,能夠經過GET請求和查詢參數調用它。此後端的代碼很是簡單,而且不使用任何框架(SpringBoot、Swarm或 WildFlySwarm)。git
要在端口8080上啓動後端服務,在目錄並運行如下命令:github
該服務在/api/backend 開放,並接受一個查詢參數。例如,當咱們使用如下路徑/API/backend?greeting=Hello時,後端服務將使用以下所示的JSON對象進行響應:後端
$ curl -X GET http://localhost:8080/api/backend?greeting=Helloapi
在咱們開始以前,讓咱們添加下 dropwizard-client 依賴項到咱們的 por.xml 中:瀏覽器
<dependency>服務器
<groupId>io.dropwizard</groupId>微信
<artifactId>dropwizard-client</artifactId>app
</dependency>框架
咱們將在 hola-dropwizard 示例中建立一個新的HTTP端點/api/greeting,並使用 Jersey 調用此後端!首先,讓咱們在名爲GreeterRestResources和GreeterSayingFactory的hola-dropwizard項目的src/main/java/com/redhat/examples/dropwizard/resources 文件夾中建立兩個新類。GreeterRestResources將實現咱們的JAX-RS REST端點,GreeterSayingFactory類將封裝咱們但願用於Greter服務的配置選項
Example 3-15 中是 GreeterRestResource 類的代碼實現
src/main/java/com/redhat/examples/dropwizard/resources/GreeterRestResource.java
GreeterSayingFactory類封裝了咱們須要的配置選項,好比服務主機和服務端口,它們能夠在不一樣的環境中更改(請參見示例3-16)。它還聲明瞭一個JerseyClientConfiguration,它爲構建咱們的澤西客戶端提供了一個很好的DSL。讓咱們將其做爲一個部分添加到HolaDropwizardConfiguration類中,如示例3-17所示。
咱們還能夠更新 conf/application.ym l文件,添加如下配置:
greeter: saying:${GREETER_SAYING:-Guten Tag Dropwizard} host:${GREETER_BACKEND_HOST:-localhost} port:${GREETER_BACKEND_PORT:-8080}
注意若是OS環境變量沒有提供各類配置選項,咱們將爲它們指定默認值。
如今,讓咱們鏈接客戶端和HolaDropwizardApplication類中的 greeter 資源,在這個類中,咱們全部的服務和資源都鏈接到環境對象(示例3-18)。
最後,讓咱們實現客戶端,它將調用後端服務,並注入全部適當的主機和端口信息,請參見示例3-19。x
Dropwizard 爲進行REST調用提供了兩個方便包裝:HttpComponents庫直接(若是您須要低級別的HTTP訪問)或Jersey/JAX-RS REST客戶端庫,它們具備用於進行HTTP調用的高級DSL。在前面的示例中,咱們使用 Jersey 客戶端進行調用。
如今,讓咱們構建微服務,並驗證咱們能夠調用這個新的問候語端點,以及它是否正確地調用後端。首先,若是後端尚未運行,咱們就啓動它。導航到此應用程序附帶的源代碼的後端目錄並運行它:
$ mvn clean install jetty:run
接下來,讓咱們構建並運行 Dropwizard 微服務。讓咱們也將此服務配置爲在與其默認端口(8080)不一樣的端口上運行,這樣它就不會與已經在8080端口上運行的後端服務發生衝突。在後面的書中,咱們能夠看到如何在它們本身的容器中運行這些微服務,從而消除了在運行時對端口切換的限制。
首先,讓咱們明確說明要使用哪一個端口做爲默認端口。打開conf/application.yml文件並添加服務器端口信息:
server: applicationConnectors: - type: http port: 8080
如今經過覆蓋默認端口啓動微服務:
$ mvn clean install exec:java \ -Ddw.server.applicationConnectors[0].port=9090
如今,讓咱們導航瀏覽器到http:/localhost:9090/api/問候語,看看咱們的微服務是否正確地調用後端並顯示咱們所指望的內容:
進一步學習:
在本章中,咱們瞭解了 Dropwizard,看到了與SpringBoot的一些不一樣和類似之處,以及如何公開REST端點、配置和度量,以及如何調用外部服務器。這是做爲Drop嚮導的快速介紹,決不是一個全面的指南。有關更多信息,請參見下列連接:
Dropwizard Core
Dropwizard Getting Started
Client API
Dropwizard on GitHub
Dropwizard examples on GitHub
下一節更加精彩!!!敬請期待
原文:
做者源碼:https://github.com/redhat-developer/microservices-by-example-source
有什麼討論的內容,能夠加我微信公衆號: