超时机制
问题:
- 服务消费者在调用服务提供者的时候发生了阻塞、等待的情形,这个时候,服务消费者会一直等待下去。
- 在某个峰值时刻,大呈的请求都在同时请求服务消费者,会造成线程的大呈堆积,势必会造成雪崩。
- 利用超时机制来解决这个问题,设置一个超时时间,在这个时间段内,无法完成服务访问,则自动断开连接。
配置超时时间
# 默认超时时间
feign:
client:
config:
default:
# 连接超时时间
connectTimeout: 2000
# 读取超时时间
readTimeout: 2000
服务提供方8001故意写超时程序
/** * 测试超时机制 * @return */ @GetMapping("timeout") public String paymentFeignTimeOut(){ try { TimeUnit.SECONDS.sleep(5); } catch (InterruptedException e) { e.printStackTrace(); } return "payment success"; }
服务消费方80添加超时方法PaymentFeignService
@FeignClient("CLOUD-PAYMENT-PROVIDER")
public interface PaymentFeignService {
@GetMapping("/payment/index")
String index();
@GetMapping("/payment/timeout")
String timeout();}
服务消费方80添加超时方法OrderController
/** * 测试超时机制 * @return */
@GetMapping("timeout")
public String timeout(){
return paymentFeignService.timeout();
}