说明:1、百度翻译接口降级处理

This commit is contained in:
xjs 2021-12-28 14:18:47 +08:00
parent 074448d44b
commit 0f36d3e0fe
5 changed files with 39 additions and 17 deletions

View File

@ -2,6 +2,7 @@ package com.xjs.common.client;
import com.alibaba.fastjson.JSONObject;
import com.xjs.common.aop.ApiLog;
import com.xjs.common.client.factory.BaiduFeignFactory;
import com.xjs.translation.domain.qo.translation.BaiDuTranslationQo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
@ -11,7 +12,7 @@ import org.springframework.web.bind.annotation.PostMapping;
* @desc 百度翻译接口api调用
* @create 2021-12-25
*/
@FeignClient(name = "baidu",url = "http://api.fanyi.baidu.com/api/trans/vip/translate?")
@FeignClient(name = "baidu",url = "http://api.fanyi.baidu.com/api/trans/vip/translate?",fallbackFactory = BaiduFeignFactory.class)
public interface BaiduFeignClient {
@PostMapping(headers = {"Content-Type=application/x-www-form-urlencoded"})

View File

@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.GetMapping;
* @desc 天行数据朋友圈文案接口api调用
* @create 2021-12-27
*/
@FunctionalInterface
@FeignClient(name = "tianXing",url = "http://api.tianapi.com/pyqwenan/index",fallbackFactory = TianXingFeignFactory.class)
public interface TianXingFeignClient {

View File

@ -0,0 +1,27 @@
package com.xjs.common.client.factory;
import com.alibaba.fastjson.JSONObject;
import com.xjs.common.client.BaiduFeignClient;
import lombok.extern.log4j.Log4j2;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* @author xiejs
* @desc 百度翻译平台服务降级处理类
* @create 2021-12-28
*/
@Log4j2
@Component
public class BaiduFeignFactory implements FallbackFactory<BaiduFeignClient> {
@Override
public BaiduFeignClient create(Throwable cause) {
log.error("英语模块百度翻译服务调用失败:{},执行降级处理", cause.getMessage());
return qo -> {
JSONObject jsonObject = new JSONObject();
//构建一个异常json给下层接口处理
jsonObject.put("error", 500);
return jsonObject;
};
}
}

View File

@ -2,10 +2,7 @@ package com.xjs.common.client.factory;
import com.alibaba.fastjson.JSONObject;
import com.xjs.common.client.TianXingFeignClient;
import com.xjs.copywriting.domain.RequestBody;
import com.xjs.copywriting.service.CopyWritingService;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
@ -17,22 +14,16 @@ import org.springframework.stereotype.Component;
@Log4j2
@Component
public class TianXingFeignFactory implements FallbackFactory<TianXingFeignClient> {
@Autowired
private CopyWritingService copyWritingService;
@Override
public TianXingFeignClient create(Throwable cause) {
log.error("英语模块文案服务调用失败:{},执行降级处理", cause.getMessage());
//没用拉姆达考虑后面该feign接口还会调用其他api接口
return new TianXingFeignClient() {
@Override
public JSONObject copyWritingApi(RequestBody requestBody) {
JSONObject jsonObject = new JSONObject();
//构建一个异常json给下层接口处理
jsonObject.put("error", 500);
return jsonObject;
}
};
return requestBody -> {
JSONObject jsonObject = new JSONObject();
//构建一个异常json给下层接口处理
jsonObject.put("error", 500);
return jsonObject;
};
}

View File

@ -41,7 +41,9 @@ public class BaiDuTranslationFactory implements TranslationFactory {
baiDuTranslationQo.setSign(sign);
baiDuTranslationQo.setQ(translationQo.getQ());
JSONObject jsonObject = baiduFeignClient.translationApi(baiDuTranslationQo);
if(Objects.nonNull(jsonObject.getString("error_code"))){
System.out.println(jsonObject);
//接口内部错误以及网络错误都抛异常
if(jsonObject.containsKey("error_code") || jsonObject.containsKey("error")){
throw new ApiException("百度翻译接口调用异常");
}
TranslationVo translationVo = new TranslationVo();