Eclipse初次搭建SpringCloud-Feign負載均衡(四)
阿新 • • 發佈:2018-12-05
一、Feign簡介
Feign是一個宣告式的偽Http客戶端,它使得寫Http客戶端變得更簡單。使用Feign,只需要建立一個介面並註解。它具有可插拔的註解特性,可使用Feign 註解和JAX-RS註解。Feign支援可插拔的編碼器和解碼器。Feign預設集成了Ribbon,並和Eureka結合,預設實現了負載均衡的效果。
簡而言之:
- Feign 採用的是基於介面的註解
- Feign 整合了ribbon
二、準備工作
繼續用上一節的工程, 啟動discSystem-3,埠為12345; 啟動discSystem-4、discSystem-4-1 ,埠分別為12346、12347.
三、建立一個feign的服務(service-feign)
四、新增application.yml
server:
port: 12349
eureka:
client:
serviceUrl:
defaultZone: http://localhost:12345/eureka/
spring:
application:
name: service-feign
五、在啟動類ServiceFeignApplication ,加上@EnableFeignClients註解開啟Feign的功能
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.openfeign.EnableFeignClients; @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients public class ServiceFeignApplication { public static void main(String[] args) { SpringApplication.run(ServiceFeignApplication.class, args); } }
六、定義一個Feign介面類(SchedualCilentName)
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; /** * 定義一個Feign介面類 * @author 於志強 * * 2018年11月28日 上午11:43:20 */ @FeignClient(value = "clientName") public interface SchedualCilentName { // value值必須與discSystem-4、discSystem-4-1中方法名一致 @RequestMapping(value = "/test",method = RequestMethod.GET) String sayHiFromClientOne(); }
七、定義一個對外的Controller
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 暴漏一個可以訪問的地址
* @author 於志強
*
* 2018年11月28日 上午11:45:44
*/
@RestController
public class ClientNameController {
@Autowired
SchedualCilentName schedualCilentName;
// controller中的value值不做要求 隨便寫
@RequestMapping(value = "/demo",method = RequestMethod.GET)
public String sayHi(){
return schedualCilentName.sayHiFromClientOne();
}
}
八、啟動服務
訪問(http://localhost:12345/)
訪問(http://localhost:12349/demo) 瀏覽器交替顯示:
Hello World!!! 埠為:12346
Hello World!!! 埠為:12347