<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
feign: hystrix: enabled: true
@FeignClient(value="tzg-service-business",fallback = BusinessHystric.class )//value表示要調用的服務名,fallback表示熔斷處理類 public interface BusinessMirco { //表示要掉用的服務的api,value和該api的url保持一致,特別注意要有@RequestParam,否則會出錯! @GetMapping(value = "/" + GlobalConfigVar.VERSION +"/business/school/get_list") MsgResponse<String> getList(@RequestParam GetSchoolListParam param); }
@Component public class BusinessHystric implements BusinessMirco { //feign接口的具體熔斷方法 @Override public MsgResponse getList(GetSchoolListParam param) { return new MsgResponse().failure(-1,"服務器走神了"); } }
@GetMapping("/testFeign") public Object testFeign(){ GetSchoolListParam listParam=new GetSchoolListParam(); listParam.setCity_id(1); return business.getList(listParam);//business爲BusinessMirco實例; }
2019/07/26追加:在實際使用中咱們可能碰到使用Get方式請求其參數是對象時——服務端接口接收不到對象的狀況;spring
此時有兩種辦法:一是將對象拆解出來,一個個傳參數;緣由:get原理實際上是拼接的一個一個參數發送給服務端,而後映射到對象的屬性值;因此若是feign 消費端中直接傳一個對象服務端是接收不到的;api
二是將服務端接口改爲post方式結合@RequestBody便可傳遞對象參數:服務器