开场白
生活是美好的,咱们无论什么时候得充满信心,对未来充满希望,并以平衡为美
对于咱们的技术架构也是一样,也是一样,要做到技术对业务的平衡,并不能因为某项技术好就使用它,要从业务、公司发展及他因素寻找平衡点。
异中求同,折中冲突,乃万事万物生存之道。-赫拉克利特
问题描述
有时候有这样的需求,客户端通过feign的client进行调用服务的接口,进行跑数据,但是这个跑数据是批量跑,需要耗费很长的时间进行返回数据,而又不能让客户端进行断掉,同时不能通过改变全局配置来进行接口的超时设置。
解决方案
方案描述
针对上面提出的问题,如果通过全局配置会影响全局接口的调用,因为其他接口延长了超时时间,那就会导致很多接口执行很长时间,其他接口阻塞的情况,同时也不会收到很好的效果,会报如下的异常:
feign.FeignException: status 500 reading
2020-10-23 11:40:26,042 ERROR [XNIO-2 task-57] [n.c.r.f.r.e.BusinessExceptionHandler:63] - Startup-21dd19f6d329451d - [5000][Startup-21dd19f6d329451d]系统异常! Broken pipe
java.io.IOException: Broken pipe
at sun.nio.ch.FileDispatcherImpl.writev0(Native Method)