Spring Boot 4 माइक्रोसर्विस और REST API · पाठ

फ़ॉलबैक और टाइमआउट लागू करना

अविश्वसनीय सेवा कॉल के लिए सुचारु फ़ॉलबैक और टाइमआउट कॉन्फ़िगर करें।

पाठ 2, कुल 3 में से10 चरण

फ़ॉलबैक और टाइमआउट लागू करना, CoddyKit पर Spring Boot 4 माइक्रोसर्विस और REST API का एक निःशुल्क पाठ है। यह 3 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Spring Boot 4 माइक्रोसर्विस और REST API सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Spring Boot 4 माइक्रोसर्विस और REST API पाठ्यक्रम में कुल 3 पाठ शामिल हैं।

लचीली सेवाएँ बनाना

माइक्रोसर्विस में सेवाएँ अक्सर एक-दूसरे पर निर्भर होती हैं। यदि कोई सेवा धीमी हो जाए या विफल हो जाए, तो क्या होगा?

यह पाठ टाइमआउट और फ़ॉलबैक जैसे महत्वपूर्ण पैटर्न पर चर्चा करता है, जो आपके अनुप्रयोगों को ऐसी समस्याओं के प्रति लचीला बनाते हैं।

अविश्वसनीय कॉल से निपटना

कल्पना कीजिए कि आपकी उपयोगकर्ता सेवा किसी उत्पाद सेवा को कॉल करती है। यदि उत्पाद सेवा अटक जाए, तो आपकी उपयोगकर्ता सेवा अनिश्चित समय तक प्रतीक्षा कर सकती है।

  • संसाधनों की कमी: थ्रेड अटक जाते हैं और मेमोरी तथा CPU का उपयोग करते हैं।
  • खराब उपयोगकर्ता अनुभव: उपयोगकर्ताओं को लंबे समय तक प्रतीक्षा करनी पड़ती है या अनुप्रयोग प्रतिक्रिया देना बंद कर देते हैं।
  • श्रृंखलाबद्ध विफलताएँ: एक धीमी सेवा दूसरी सेवाओं को भी बंद कर सकती है।

कॉल टाइमआउट को समझना

टाइमआउट वह अधिकतम अवधि है, जितने समय में किसी ऑपरेशन को पूरा होने की अनुमति होती है। यदि ऑपरेशन इस अवधि में पूरा नहीं होता, तो उसे रद्द कर दिया जाता है।

  • कनेक्शन टाइमआउट: कनेक्शन स्थापित होने तक प्रतीक्षा करने की अवधि।
  • रीड टाइमआउट: कनेक्शन स्थापित होने के बाद डेटा की प्रतीक्षा करने की अवधि।

टाइमआउट आपके अनुप्रयोग को अनुत्तरदायी सेवा के लिए हमेशा प्रतीक्षा करने से बचाते हैं।

बुनियादी टाइमआउट कॉन्फ़िगर करना

आप Spring के RestTemplate या WebClient जैसे HTTP क्लाइंट के लिए टाइमआउट कॉन्फ़िगर कर सकते हैं। यह उदाहरण एक सरल RestTemplate सेटअप दिखाता है।

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
import org.springframework.boot.web.client.RestTemplateBuilder;
import java.time.Duration;

@SpringBootApplication
public class TimeoutApp {

  public static void main(String[] args) {
    SpringApplication.run(TimeoutApp.class, args);
  }

  @Bean
  public RestTemplate restTemplate(RestTemplateBuilder builder) {
    return builder
        .setConnectTimeout(Duration.ofSeconds(1)) // 1 second to connect
        .setReadTimeout(Duration.ofSeconds(2))    // 2 seconds to read data
        .build();
  }
  
  // In a real app, you'd inject and use this RestTemplate
  // e.g., restTemplate.getForObject("http://localhost:8081/slow-service", String.class);
}

फ़ॉलबैक के साथ सहज सीमित कार्यक्षमता

टाइमआउट के बावजूद, सेवा कॉल फिर भी विफल हो सकती है, जैसे नेटवर्क समस्याओं या सेवा की अनुपलब्धता के कारण। जब मुख्य ऑपरेशन विफल हो, तो फ़ॉलबैक कोई वैकल्पिक कार्रवाई या डिफ़ॉल्ट मान उपलब्ध कराता है।

इससे आपका अनुप्रयोग सीमित कार्यक्षमता के साथ भी सहजता से प्रतिक्रिया दे सकता है।

सरल फ़ॉलबैक तर्क

आप try-catch ब्लॉक का उपयोग करके फ़ॉलबैक को मैन्युअल रूप से लागू कर सकते हैं। इससे आप अपवादों को संभालकर डिफ़ॉल्ट प्रतिक्रिया लौटा सकते हैं।

उपयोगकर्ता का विवरण प्राप्त करने वाली एक सरल विधि पर विचार कीजिए:

public class UserService {

  public String getUserName(int userId) {
    try {
      // Simulate a network call that might fail
      if (userId == 101) {
        throw new RuntimeException("Service unavailable!");
      }
      return "User " + userId + " Details";
    } catch (Exception e) {
      // This is our fallback logic!
      System.out.println("Error fetching user " + userId + ". Returning default.");
      return "Guest User"; // Fallback value
    }
  }

  public static void main(String[] args) {
    UserService service = new UserService();
    System.out.println(service.getUserName(100)); // Works
    System.out.println(service.getUserName(101)); // Fails, returns fallback
  }
}

फ़ॉलबैक के लिए Resilience4j

फ़ॉलबैक को मैन्युअल रूप से प्रबंधित करना जटिल हो सकता है। Resilience4j जैसी लाइब्रेरी फ़ॉलबैक सहित लचीलापन पैटर्न लागू करने के लिए घोषणात्मक तरीके उपलब्ध कराती हैं।

Resilience4j, Spring Boot के साथ अच्छी तरह एकीकृत होती है और आपको एक fallbackMethod निर्दिष्ट करने देती है, जिसे मुख्य विधि विफल होने पर कॉल किया जाता है।

Resilience4j के साथ घोषणात्मक फ़ॉलबैक

Resilience4j के @CircuitBreaker एनोटेशन का उपयोग करके आप एक fallbackMethod परिभाषित कर सकते हैं। मुख्य विधि विफल होने या सर्किट ब्रेकर खुला होने पर इस विधि को कॉल किया जाएगा।

सबसे पहले, आपको Resilience4j निर्भरता की आवश्यकता होगी। फिर आप इसे लागू कर सकते हैं:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker;

@SpringBootApplication
@RestController
public class ResilienceApp {

  @Autowired
  private ProductService productService;

  public static void main(String[] args) {
    SpringApplication.run(ResilienceApp.class, args);
  }

  @GetMapping("/product-info")
  public String getProductDetails() {
    return productService.getProduct();
  }
}

@Service
class ProductService {
  private int callCount = 0;

  @CircuitBreaker(name = "productService", fallbackMethod = "fallbackGetProduct")
  public String getProduct() {
    callCount++;
    if (callCount % 3 != 0) { // Simulate failure 2 out of 3 times
      throw new RuntimeException("Product service is down!");
    }
    return "Product A Details";
  }

  // This is the fallback method
  public String fallbackGetProduct(Throwable t) {
    System.out.println("Fallback activated: " + t.getMessage());
    return "Default Product (Fallback)";
  }
}

अपना ज्ञान आज़माइए

आपके पास एक माइक्रोसर्विस है, जो किसी बाहरी भुगतान गेटवे को कॉल करती है। यह गेटवे कभी-कभी धीमा होता है या विफल हो जाता है।

लचीलापन पैटर्न का कौन-सा संयोजन यह सुनिश्चित करने के लिए सबसे अच्छा होगा कि भुगतान गेटवे के अविश्वसनीय होने पर भी आपकी सेवा सक्रिय बनी रहे और उपयोगकर्ता के लिए सुविधाजनक अनुभव प्रदान करे?

पाठ का सारांश

हमने सीखा कि मज़बूत माइक्रोसर्विस बनाने के लिए टाइमआउट और फ़ॉलबैक आवश्यक हैं:

  • टाइमआउट सेवा कॉल को अनिश्चित समय तक अटकने से रोकते हैं और संसाधनों को बचाते हैं।
  • फ़ॉलबैक मुख्य ऑपरेशन विफल होने पर वैकल्पिक प्रतिक्रियाएँ उपलब्ध कराते हैं और सहज रूप से सीमित कार्यक्षमता सुनिश्चित करते हैं।

ये पैटर्न उपयोगकर्ता अनुभव बेहतर करते हैं और वितरित प्रणालियों में श्रृंखलाबद्ध विफलताओं को रोकते हैं। और भी अधिक लचीले अनुप्रयोग बनाने के लिए अभ्यास करते रहें!

शुरुआत निःशुल्क

एआई शिक्षक के साथ Java सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
24
पाठ
93

अक्सर पूछे जाने वाले प्रश्न

क्या “फ़ॉलबैक और टाइमआउट लागू करना” पाठ निःशुल्क है?

हाँ—“फ़ॉलबैक और टाइमआउट लागू करना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Spring Boot 4 माइक्रोसर्विस और REST API पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Spring Boot 4 माइक्रोसर्विस और REST API पाठ्यक्रम में कुल 3 पाठ शामिल हैं।

“फ़ॉलबैक और टाइमआउट लागू करना” में मैं क्या सीखूँगा?

अविश्वसनीय सेवा कॉल के लिए सुचारु फ़ॉलबैक और टाइमआउट कॉन्फ़िगर करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Spring Boot 4 माइक्रोसर्विस और REST API का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Spring Boot 4 माइक्रोसर्विस और REST API शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Spring Boot 4 माइक्रोसर्विस और REST API शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 3 में से 2वाँ पाठ है।

“फ़ॉलबैक और टाइमआउट लागू करना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Spring Boot 4 माइक्रोसर्विस और REST API पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Spring Boot 4 माइक्रोसर्विस और REST API पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Resilience4j के साथ सर्किट ब्रेकर
  2. फ़ॉलबैक और टाइमआउट लागू करना
  3. Zipkin के साथ वितरित ट्रेसिंग
← Spring Boot 4 माइक्रोसर्विस और REST API पर वापस जाएँ