错误类型
java.net.SocketTimeoutException: Read timed out 读取超时了
问题原因
使用feign调用服务时,feign有内置的ribbon,并且内置的ribbon有默认设置了数据通信时长为2s,在2s内没有获取的数据响应就是出现该异常,本人在服务端是有设置了线程休眠时间为2s所以造成了此异常发生
解决方法
修改feign内置ribbon的默认数据通信超时时长
ribbon:
ReadTimeout: 6000
注意:手动输入IDEA可能没有相关的提示
其他博主可能还配置了连接超时时长ConnectionTimeOut,feign内置ribbon的默认请求超时时长是1s,不过本人的问题不是没有连接上而是没有读取的数据 所以就没有配置了
一些内置的参数配置
ribbon:
ReadTimeout: 6000 #配置数据通信超时时长 默认为2s
ConnectionTimeout: 6000 #配置请求连接超时时长 默认为6s
MaxAutoRetries: 0 #配置请求超时后当前服务器的重试次数 默认为0
MaxAutoRetriesNextServer: 0 #配置重试多少次服务 默认为0
OkToRetryOnAllOperations: false #是否所有请求方式超时了都进行重试