在消費者**中對任何服務例項的url進行硬編碼是錯誤的。這不僅將消費者耦合到服務的特定例項,而且如果服務的主機和/或埠要改變,也可能導致消費者中斷。
eureka的兩種消費服務方式包括:
使用resttemplate消費服務
一旦將應用程式作為eureka客戶端啟用,則可以選擇宣告負載平衡resttemplate的bean。您所需要做的就是宣告乙個常規resttemplate 的bean,但用以下@bean方法注釋該方法@loadbalanced:
@bean
@loadbalanced
public resttemplate resttemplate()
@component
public class ingredientserviceclient
...}
public ingredient getingredientbyid(string ingredientid) ",
ingredient.class, ingredientid);
}
賦予的url getforobject()不使用任何特定的主機名或埠。使用服務名稱成分服務來代替主機名和埠。
使用webclient消費服務
首先要做的是宣告乙個webclient.builder帶有@loadbalanced以下注釋的bean方法:
@bean
@loadbalanced
public webclient.builder webclientbuilder()
webclient.builder宣告乙個bean之後,您現在可以將負載均衡webclient.builder注入任何需要它的bean中。
@component
public class ingredientserviceclient
...}
最後,當您準備使用它時,可以使用webclient.builder構建乙個webclient,然後使用該服務的名稱(在eureka中進行註冊的服務名稱)來發出請求:
public monogetingredientbyid(string ingredientid) ", ingredientid)
.retrieve().bodytomono(ingredient.class);
}
與負載平衡一樣resttemplate,發出請求時無需顯式指定主機或埠。服務名稱將從給定的url中提取,並用於從eureka查詢服務。然後,ribbon將選擇服務的乙個例項,並在發出請求之前,用所選例項的主機和埠重寫url。
使用feign的第一步是將依賴項新增到專案構建中。在pom.xml中,以下操作可以解決問題:
org.springframework.cloud
spring-cloud-starter-openfeign
啟用feign。您需要將@enablefeignclients注釋新增到配置類之一中:
@configuration
@enablefeignclients
public restclientconfiguration
通過定義介面呼叫微服務
package tacos.ingredientclient.feign;
import org.springframework.cloud.openfeign.feignclient;
import org.springframework.web.bind.annotation.pathvariable;
import tacos.ingredientclient.ingredient;
@feignclient("ingredient-service")
public inte***ce ingredientclient
這是乙個簡單的介面,沒有實現。但是在執行時,只要feign掌握了它,feign就自動建立乙個實現,並在spring應用程式上下文中將其公開為bean。
注入feign實現的介面並開始使用它
@controller
public class ingredientcontroller
public string ingredientdetailpage(@pathvariable("id") string id,
model model)
}
10 使用Eureka編寫服務消費者
1 直接呼叫介面 server.port 8082 resttemplate 是 spring 提供的用於訪問 rest 服務的客戶端,resttemplate 提供了多種便捷訪問遠端 http 服務的方法,能夠大大提高客戶端的編寫效率。我們通過配置 resttemplate 來呼叫介面,如下所示。...
Eureka服務提供者和消費者
建立專案eureka client user service,作為服務提供者註冊到euraka中。org.springframework.boot groupid spring boot starter web artifactid dependency org.springframework.cl...
Eureka的服務提供者 服務消費者和註冊中心詳解
一 架構圖 二 服務提供者 1 服務註冊 服務提供者 在啟動的時候會通過rest請求的方式將自己註冊到eureka server上,同時帶上自身服務的一些元資料資訊。eureka server接收到這個rest請求之後,將元資料資訊儲存在乙個雙層結構map中,其中第一層的key是服務名,第二層的ke...