學習springcloud的Eureka(註冊和呼叫服務)。記錄其中遇見的問題(參考純潔的微笑)
阿新 • • 發佈:2019-04-09
下午有時間,繼續接著,上次的看。
上次已經完成了Eureka的搭建,和叢集,今天開始研究服務的註冊和釋出
建立一個工程,為註冊服務,向Eureka服務中心,進行註冊
選擇好以後,建立成功註冊服務工程
開始進行配置
application.properties配置檔案 裡面,增加服務配置
spring.application.name=spring-cloud-consumer server.port=9000 eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/
spring.application.name 服務名稱,使用者服務之間,進行呼叫
port埠 eureka.client.serviceUrl.defaultZone設定與Eureka Server互動的地址,查詢服務和註冊服務都需要依賴這個地址。多個地址可使用 , 分隔。
Springboot的啟動檔案增加配置註解,讓Eureka發現此服務,進行註冊
@EnableDiscoveryClient//啟用服務註冊與發現
啟動專案,訪問Eureka8000埠,發現,新增了一個服務,服務名,與配置檔案相同
建立controller
package com.example.democloudserver.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { /** * 測試服務註冊 * @param name * @return */ @GetMapping("/hello") public String index(@RequestParam String name){ return "hello-2:"+ name; } }
好了,這一步,已經說明,服務註冊成功,下面,建立呼叫服務,用過Eureka呼叫,剛才註冊的服務
建立呼叫服務和之前基本相同,idea建立工程,就可以,唯一不同的是,呼叫服務,需要Feign,所有,在這裡,還要進行勾選這個
建立成功專案,開始配置
spring.application.name=spring-cloud-consumer server.port=9001 eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/
啟動項配置
@EnableDiscoveryClient//啟用服務註冊與發現 @EnableFeignClients//啟用feign進行遠端呼叫
開啟feign的作用,是進行遠端呼叫,開啟EnableDiscoveryClient,是為了讓Eureka發現
建立一個介面,通過註解,遠端呼叫剛才的註冊服務
package com.example.servicefeign.interfaceServer; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @FeignClient(name= "spring-cloud-producer") //name:遠端服務名,及spring.application.name配置的名稱 public interface HelloRemote { @RequestMapping(value = "/hello") public String hello(@RequestParam(value = "name") String name); }
定義好了以後,可以注入controller,進行呼叫
package com.example.servicefeign.controller; import com.example.servicefeign.interfaceServer.HelloRemote; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @Autowired HelloRemote hello;//註冊介面層 @RequestMapping("/hello/{name}") public String index(@PathVariable("name") String name) { return hello.hello(name); } }
啟動服務呼叫層,訪問controller進行訪問,調動註冊的服務,成功
這裡,我也順便測試了,服務中心提供的服務均衡負載
註冊服務,設定不同的埠,相同的服務名,進行啟動,修改輸出controller輸出為
"hello-2:"+ name
"hello-1:"+ name
頁面多次請求,發現兩種