C# अकादमी · पाठ

त्रुटि प्रबंधन और पुनःप्रयास

पुनःप्रयास और डेड-लेटर कतारों से दोष संभालें।

पाठ 4, कुल 4 में से13 चरण

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

विफलता सामान्य है

उपभोक्ता विफल हो सकते हैं: डेटाबेस की अस्थायी त्रुटि, आश्रित सेवा की समय-समाप्ति या गलत डेटा से उत्पन्न त्रुटि। MassTransit कई स्तरों वाले उपकरण (पुनःप्रयास, पुनः-वितरण, त्रुटि कतारें) उपलब्ध कराता है, ताकि संदेश खोने के बजाय विफलताओं को सहजता से संभाला जा सके।

तुरंत पुनःप्रयास

छोटी-मोटी अस्थायी समस्याओं के लिए पुनःप्रयास कॉन्फ़िगर करें, ताकि MassTransit हार मानने से पहले संदेश को कुछ बार तेज़ी से फिर से संसाधित करे।

cfg.ReceiveEndpoint("orders", e =>
{
    e.UseMessageRetry(r => r.Immediate(3));
    e.ConfigureConsumer<OrderConsumer>(context);
});

अंतराल और घातांकीय पुनःप्रयास

पुनःप्रयासों के बीच अंतर रखने से तब सहायता मिलती है जब पुनर्प्राप्ति में अधिक समय लगता है। Polly के समान अंतराल या घातांकीय विलंब का उपयोग करें।

e.UseMessageRetry(r =>
    r.Exponential(5,
        minInterval: TimeSpan.FromSeconds(1),
        maxInterval: TimeSpan.FromMinutes(1),
        intervalDelta: TimeSpan.FromSeconds(2)));

किन त्रुटियों पर पुनःप्रयास करना है

केवल अस्थायी अपवादों पर पुनःप्रयास करें; सत्यापन विफलताओं जैसी स्थायी समस्याओं पर नहीं। पुनःप्रयासों का दायरा निर्धारित करने के लिए Handle और Ignore का उपयोग करें।

e.UseMessageRetry(r =>
{
    r.Handle<TimeoutException>();
    r.Ignore<ValidationException>();
    r.Immediate(3);
});

पुनःप्रयास बनाम पुनः-वितरण

पुनःप्रयास संदेश को स्मृति में रखता है और उसे तेज़ी से फिर से संसाधित करता है। पुनः-वितरण (विलंबित/द्वितीय-स्तरीय पुनःप्रयास) संदेश को ब्रोकर को वापस भेजता है, ताकि उसे बहुत बाद में फिर वितरित किया जा सके और इस बीच उपभोक्ता मुक्त रहे।

e.UseDelayedRedelivery(r =>
    r.Intervals(TimeSpan.FromMinutes(5),
                TimeSpan.FromMinutes(15),
                TimeSpan.FromMinutes(30)));

दोनों स्तरों का संयोजन

एक सुदृढ़ व्यवस्था छोटी-मोटी समस्याओं के लिए तुरंत पुनःप्रयास और लंबे समय तक चलने वाली रुकावटों के लिए विलंबित पुनः-वितरण का उपयोग करती है। पुनः-वितरण को पुनःप्रयास के बाहर कॉन्फ़िगर करें, ताकि पुनः-वितरण के प्रत्येक प्रयास को भी अपने तुरंत पुनःप्रयास मिलें।

e.UseDelayedRedelivery(r => r.Intervals(
    TimeSpan.FromMinutes(5), TimeSpan.FromMinutes(15)));
e.UseMessageRetry(r => r.Immediate(3));

त्रुटि कतार

जब सभी पुनःप्रयास और पुनः-वितरण समाप्त हो जाते हैं, तो MassTransit संदेश को त्रुटि कतार (<queue>_error नाम वाली) में भेज देता है। संदेश को जाँच के लिए अपवाद के विवरण सहित सुरक्षित रखा जाता है; उसे कभी भी चुपचाप हटाया नहीं जाता।

विफलताएँ

विफलता होने पर MassTransit एक Fault<T> इवेंट भी प्रकाशित करता है। अन्य सेवाएँ सूचना देने, लॉग दर्ज करने या क्षतिपूर्ति शुरू करने के लिए विफलताओं का उपभोग कर सकती हैं।

public class OrderFaultConsumer : IConsumer<Fault<OrderPlaced>>
{
    public Task Consume(ConsumeContext<Fault<OrderPlaced>> context)
    {
        // inspect context.Message.Exceptions
        return Task.CompletedTask;
    }
}

इडेम्पोटेंसी महत्वपूर्ण है

पुनःप्रयास और पुनः-वितरण किसी संदेश को एक से अधिक बार संसाधित कर सकते हैं, इसलिए उपभोक्ताओं को दोहराव-सुरक्षित होना चाहिए: एक ही संदेश को दो बार संभालने से भुगतान दो बार नहीं लिया जाना चाहिए और काम दोहराया नहीं जाना चाहिए। विशिष्ट पहचानकर्ताओं और दोहराव हटाने वाली जाँचों का उपयोग करें।

त्रुटि कतार से फिर चलाना

किसी त्रुटि को ठीक करने के बाद आप संदेशों को त्रुटि कतार से मूल कतार में वापस भेजकर फिर से संसाधित कर सकते हैं और पहले विफल हुए काम को पुनर्प्राप्त कर सकते हैं।

अमान्य और छोड़ी गई कतारें

MassTransit उन संदेशों के लिए छोड़ी गई कतार (_skipped) का भी उपयोग करता है जिन्हें कोई उपभोक्ता स्वीकार नहीं करना चाहता था। इससे आपको उत्पादन परिवेश में गलत दिशा में भेजे गए या अप्रत्याशित संदेश प्रकारों का पता लगाने में सहायता मिलती है।

त्वरित जाँच

त्रुटि-प्रबंधन और पुनःप्रयासों का परीक्षण करें।

पुनरावलोकन

MassTransit विफलता-प्रबंधन को कई स्तरों में बाँटता है: छोटी-मोटी समस्याओं के लिए पुनःप्रयास (तुरंत/घातांकीय, संभालने और अनदेखा करने के दायरे के साथ), लंबी रुकावटों के लिए पुनः-वितरण, और ऐसे संदेशों के लिए त्रुटि कतार जिनके सभी प्रयास समाप्त हो चुके हैं, साथ ही सूचनाओं के लिए Fault<T> इवेंट। संदेशों को एक से अधिक बार संसाधित किया जा सकता है, इसलिए उपभोक्ताओं को दोहराव-सुरक्षित रखें और त्रुटियाँ ठीक करने के बाद त्रुटि कतार से संदेश फिर चलाएँ।

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

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

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

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

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

क्या “त्रुटि प्रबंधन और पुनःप्रयास” पाठ निःशुल्क है?

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

“त्रुटि प्रबंधन और पुनःप्रयास” में मैं क्या सीखूँगा?

पुनःप्रयास और डेड-लेटर कतारों से दोष संभालें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C# अकादमी का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या C# अकादमी शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

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

“त्रुटि प्रबंधन और पुनःप्रयास” पाठ पूरा करने में कितना समय लगता है?

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

क्या मैं इस C# अकादमी पाठ में कोड लिख और चला सकता हूँ?

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

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

  1. मैसेजिंग अवधारणाएँ
  2. संदेश बनाना और उपभोग करना
  3. सागा और वर्कफ़्लो
  4. त्रुटि प्रबंधन और पुनःप्रयास
← C# अकादमी पर वापस जाएँ