最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Feign調(diào)用服務(wù)各種坑的處理方案

 更新時(shí)間:2021年06月24日 14:25:02   作者:YeBigBen  
這篇文章主要介紹了Feign調(diào)用服務(wù)各種坑的處理方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

1.編寫(xiě)被調(diào)用服務(wù)

@RefreshScope
@RestController
public class XXXController extends BaseController implements IndicatorsFeignApi{
	@Resource
	private XXXService xxx;
	@Override
	public Wrapper<CommonVo> getXXXX(@RequestBody CommonDto commonDto) {
		try {
			CommonVo vo = xxx.getdata(commonDto);
			return WrapMapper.ok(vo);
		}catch(Exception e) {
			e.printStackTrace();
			return WrapMapper.error("系統(tǒng)異常,請(qǐng)聯(lián)系管理員!");
		}
	}
}
//Service不進(jìn)行展示,注意參數(shù)傳遞至service層時(shí)要加入注解@RequestBody等才能獲取參數(shù)

在配置文件添加feign相關(guān)配置

在這里插入圖片描述

2.編寫(xiě)調(diào)用api

在這里插入圖片描述

pom文件中添加相關(guān)依賴

org.springframework.cloud
spring-cloud-starter-hystrix
org.springframework.cloud
spring-cloud-starter-netflix-hystrix-dashboard

調(diào)用Api

@FeignClient(value = "被調(diào)用服務(wù)名")
public interface IndicatorsFeignApi {
 
 @PostMapping(value = "/api/getXXXX",consumes="application/json", headers = {"Accept=application/json", "Content-Type=application/json"})
 Wrapper<CommonVo> getXXXX(@RequestBody CommonDto commonDto); 
}

Feign調(diào)用錯(cuò)誤處理,發(fā)生相關(guān)錯(cuò)誤是會(huì)跳轉(zhuǎn)至fallback處理

@Component
public class IndicatorsFeignApiHystrix implements IndicatorsFeignApi {
 @Override
 public Wrapper<CommonVo> getXXXX(CommonDto commonDto) {
  System.out.println("=====調(diào)用服務(wù)獲數(shù)據(jù)發(fā)生異常======");
  return null;
 }
}

當(dāng)啟用fallback后,有些報(bào)錯(cuò)不會(huì)打印在控制臺(tái)上,這時(shí)可以修改配置中的

feign:
  hystrix:
    enabled: true

將enabled改為false,錯(cuò)誤發(fā)生后將不會(huì)跳轉(zhuǎn)fallback。

此處有一個(gè)坑,當(dāng)時(shí)調(diào)用的時(shí)候服務(wù)是可以調(diào)用成功的,但是有一個(gè)報(bào)錯(cuò):

Could not extract response: no suitable HttpMessageConverter found for response type [XXXX] and content type [text/html;charset=UTF-8]

貌似是返回?cái)?shù)據(jù)的編碼與接收實(shí)體類不一樣,導(dǎo)致報(bào)錯(cuò)。加上headers = {"Accept=application/json", "Content-Type=application/json"}解決了相關(guān)問(wèn)題.

3.編寫(xiě)客戶端服務(wù)

//serviceImp層
   @Autowired
 private IndicatorsFeignApi api;//聲明調(diào)用api
 
 @Override
 public CommonVo getXXX(CommonDto commonDto) {
  Wrapper<CommonVo> result =   api.getXXXX(commonDto);//服務(wù)調(diào)用
  if(result!=null) {
   return result.getResult();
  }else {
   return new CommonVo();
  }
 }

微服務(wù)feign調(diào)用兩邊對(duì)象不一致

一開(kāi)始以為feign調(diào)用,兩邊接收的對(duì)象必須一致

再發(fā)現(xiàn)兩邊對(duì)象的字段一致即可。

在之后遇到一個(gè)問(wèn)題

A服務(wù) a,b,兩個(gè)字段+ getC()方法

B服務(wù) a,b字段

出現(xiàn)異常序列化失敗-----聯(lián)想到前端解析json對(duì)象的方法,直接在B服務(wù)加上c字段,問(wèn)題解決了...

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

邵东县| 延长县| 伊春市| 甘肃省| 太和县| 兖州市| 遂宁市| 三穗县| 谢通门县| 巴林左旗| 宜兴市| 同江市| 东阳市| 盱眙县| 上犹县| 台前县| 合肥市| 喀喇沁旗| 庆云县| 海安县| 克东县| 瓦房店市| 临汾市| 黄陵县| 盐津县| 化州市| 遂川县| 天津市| 于田县| 县级市| 灌南县| 金塔县| 溆浦县| 永修县| 溧水县| 隆子县| 贵港市| 太原市| 连州市| SHOW| 邹城市|