Bir sorğunun sonsuza qədər gözləməsini əngəlləmək üçün maksimum icazə zamanı (deadline) tətbiq etmək.
Cavab gəlməyən servisə sonsuza qədər gözləmək Thread-i bloklayır. Bu da digər istifadəçilərin xətə almasına gətirib çıxarır.
Connection Timeout: TCP bağlantısının qurulması üçün. Read Timeout: Bağlantı qurulub, amma cavab gözlənilir.
RestTemplate, WebClient, Feign Client, gRPC deadlines, JDBC connection pool.
@Configuration
public class RestClientConfig {
@Bean
public RestTemplate restTemplate() {
var factory = new SimpleClientHttpRequestFactory();
factory.setConnectTimeout(2000); // TCP bağlantı: maks 2 san
factory.setReadTimeout(3000); // Cavab gözlə: maks 3 san
return new RestTemplate(factory);
}
}
// Feign Client ilə
@FeignClient(name = "payment",
configuration = PaymentFeignConfig.class)
public interface PaymentClient {
@GetMapping("/pay")
PaymentResult process(PaymentRequest req);
}
public class PaymentFeignConfig {
@Bean
public Request.Options options() {
return new Request.Options(
2, TimeUnit.SECONDS, // connectTimeout
3, TimeUnit.SECONDS, // readTimeout
true);
}
}