目錄:html
springcloud費話之Eureka集羣spring
springcloud費話之Eureka服務訪問(restTemplate)服務器
springcloud費話之Eureka接口調用(feign)app
springcloud費話之斷路器(hystrix in feign)負載均衡
使用eureka服務發現實現服務器之間的http訪問(feign)網站
使用restTemplate的訪問方式仍是比較複雜的,須要對其中的一些內容進行解析,增長了代碼spa
所以在服務調用之間,但願恢復單應用的調用service同樣簡單,因而使用feign的調用方式
由於feign底層是使用了ribbon做爲負載均衡的客戶端,而ribbon的負載均衡也是依賴於eureka 得到各個服務的地址,因此要引入eureka-client,實際上上述的依賴並不須要更改
具體流程以下:
1.依賴
首先在springcloud官方網站上找到feign依賴,以下圖
複製進pom
2.添加啓動類註解
在啓動類上添加註解@EnableFeignClients,添加後代碼以下:
package com.lyh.lyh_eureka_server;
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.openfeign.EnableFeignClients; @SpringBootApplication @EnableEurekaClient @EnableFeignClients public class EurekaClientRun { public static void main(String[] args) { SpringApplication.run(EurekaClientRun.class, args); } }
3.建立feign的訪問接口,代碼以下:
package com.lyh.lyh_eureka_server.Interface;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.RequestMapping;
//這裏爲請求的服務器的spring的name @FeignClient("eureka-client") public interface FeignService {
//映射名 @RequestMapping("/getInfo") public String getInfo(); }
4.建立上述接口的實現類,部分代碼以下:
t eurekaClient;
@Resource
private FeignService feignService; // 觸發的接口 by feign @RequestMapping("/getInfoFromClientByFeign") public Object getInfoFromClientByFeign() throws URISyntaxException { String obj = feignService.getInfo(); System.out.println(obj.toString()); return obj; }
5.將如上代碼複製到client2和client3中
6.測試