OpenFeign超時設置


1.代碼

在cloud-payment-provider8001的PaymentController里添加

    // 用於測試openFeign的超時控制
    @GetMapping("/payment/timeout")
    public String paymentOpenFeignTimeOut() {
        try {
            TimeUnit.SECONDS.sleep(3);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return serverPort;
    }

 

單獨測試這個,等待三秒成功訪問。

 

 

在cloud-consumer-feign-order80里寫接口等:

@Component
@FeignClient(value = "CLOUD-PAYMENT-SERVICE")
public interface PaymentFeignService {
    @GetMapping(value="/payment/get/{id}")
    public CommonResult<Payment> getPaymentById(@PathVariable("id") Long id);

 @GetMapping("/payment/timeout")
    public String paymentOpenFeignTimeOut();
}

 

@RestController
public class PaymentFeignController {
    @Resource
    private PaymentFeignService paymentFeignService;
    @GetMapping("/consumer/payment/get/{id}")
    public CommonResult<Payment> getPaymentById(@PathVariable("id") Long id) {
        return paymentFeignService.getPaymentById(id);
    }
 @GetMapping("/consumer/payment/timeout")
    public String paymentOpenFeignTimeOut() {
        return paymentFeignService.paymentOpenFeignTimeOut();
    }
}

再測試:

 

 因為feign默認等待一秒。

 

openFeign默認支持Ribbon, 在yml里開啟客戶端超時控制:

ribbon:
   ReadTimeout: 5000
   ConnectTimeout: 5000

測試超時控制ok:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM