feign.RetryableException null executing post
生活随笔
收集整理的這篇文章主要介紹了
feign.RetryableException null executing post
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
feign調(diào)用遇到的問題,該文為轉(zhuǎn)載,記錄一下
feign.RetryableException: null executing GET http://****/cr**t/e**/cre****ount/2**8060 at feign.FeignException.errorExecuting(FeignException.java:132) at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:113) at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:78) at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:103) at com.sun.proxy.$Proxy189.getCustomerCredit4Ebs(Unknown Source) at com.crpt.biz.service.impl.ebs.QueryCustomeCreditService.execute(QueryCustomeCreditService.java:56) at com.crpt.biz.service.impl.ebs.QueryCustomeCreditService.execute(QueryCustomeCreditService.java:23) at com.crpt.biz.ebs.webservice.CrptEBSService.request(CrptEBSService.java:92) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:179) at org.apache.cxf.jaxws.JAXWSMethodInvoker.performInvocation(JAXWSMethodInvoker.java:66) at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96) at org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.invoke(AbstractJAXWSMethodInvoker.java:232) at org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:85) at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:74) at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266)CXF能夠正常接入數(shù)據(jù),但是接入后調(diào)用微服務(wù)內(nèi)部的feign報(bào)錯(cuò)
原因webservice客戶端請(qǐng)求時(shí),攜帶了這個(gè)header信息:transfer-encoding:chunked
而springcloud會(huì)把請(qǐng)求過來的http header信息轉(zhuǎn)嫁給下一次發(fā)生調(diào)用的feign中,源碼詳見feign.SynchronousMethodHandler#targetRequest
這樣就需要我們定值一個(gè)RequestInterceptor去簡(jiǎn)化一下header
@Component @Slf4j public class FeignRequestInterceptor implements RequestInterceptor { final static String TRANSFER_ENCODING = "transfer-encoding"; @Override public void apply(RequestTemplate requestTemplate) {ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();if(attributes==null)return ;HttpServletRequest request= attributes.getRequest();Enumeration<String> headerNames = request.getHeaderNames();if (headerNames != null) {while (headerNames.hasMoreElements()) {String name = headerNames.nextElement();String values = request.getHeader(name);if(isOverLapHeader(requestTemplate,name))requestTemplate.header(name, values);}} } //是否允許覆蓋requestTemplate中的header private boolean isOverLapHeader(RequestTemplate requestTemplate,String headerName) {Map<String, Collection<String>> headers= requestTemplate.headers();if(headers==null){return true;}if (TRANSFER_ENCODING.equalsIgnoreCase(headerName)) {return false;}return true;}
這樣內(nèi)部的feign調(diào)用時(shí)就不會(huì)有問題了
原文鏈接:https://juejin.cn/post/6964174845051404302#comment
總結(jié)
以上是生活随笔為你收集整理的feign.RetryableException null executing post的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何删除 AWS 资源以及关闭账户(来自
- 下一篇: 手机电脑的芯片主要是由_苹果的自研电脑芯