इवेंट के साथ प्रतिपूर्ति संभालना
पिछली कार्रवाइयों को उलटने के लिए विशिष्ट रोलबैक इवेंट प्रकाशित करके Choreography Saga में प्रतिपूर्ति चरण लागू कीजिए।
इवेंट के साथ प्रतिपूर्ति संभालना, CoddyKit पर माइक्रोसर्विस संचार पैटर्न (Saga, Circuit Breaker) का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह माइक्रोसर्विस संचार पैटर्न (Saga, Circuit Breaker) सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। माइक्रोसर्विस संचार पैटर्न (Saga, Circuit Breaker) पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
प्रतिपूर्ति क्यों महत्वपूर्ण है
कोरियोग्राफी सागा में सेवाएँ इवेंट पर प्रतिक्रिया देती हैं। लेकिन तब क्या होता है जब इनमें से कोई सेवा वितरित लेन-देन में अपना भाग पूरा करने में विफल हो जाती है?
हमें पिछली सेवाओं द्वारा सफलतापूर्वक किए गए किसी भी कार्य को पूर्ववत करने का तरीका चाहिए। यहीं प्रतिपूर्ति उपयोगी होती है।
प्रतिपूर्ति क्या है
प्रतिपूर्ति वितरित लेन-देन के भीतर पहले से पूर्ण किए गए संचालन को उलटने की प्रक्रिया है। इसे माइक्रोसर्विसों के लिए तैयार की गई 'रोलबैक' व्यवस्था समझिए।
यह सुनिश्चित करती है कि कई सेवाओं वाली व्यावसायिक प्रक्रिया का कोई चरण विफल होने पर प्रणाली एक सुसंगत स्थिति में लौट सके।
कोरियोग्राफी में प्रतिपूर्ति
कोरियोग्राफी सागा में कोई केंद्रीय समन्वयक नहीं होता। सेवाएँ इवेंट के माध्यम से सीधे संचार करती हैं। तो प्रतिपूर्ति कैसे शुरू की जाए?
- जब कोई सेवा अपना कार्य पूरा करने में विफल होती है, तो वह एक विशिष्ट प्रतिपूरक इवेंट प्रकाशित करती है।
- जिन अन्य सेवाओं ने अपना भाग सफलतापूर्वक पूरा किया है, वे इन प्रतिपूरक इवेंट को सुनती हैं।
- प्रतिपूरक इवेंट प्राप्त होने पर वे अपनी रोलबैक तर्क-प्रणाली चलाती हैं।
प्रतिपूरक इवेंट का डिज़ाइन
प्रतिपूरक इवेंट में सेवाओं के लिए अपना रोलबैक करने हेतु पर्याप्त जानकारी होनी चाहिए। इनमें अक्सर ये महत्वपूर्ण विवरण शामिल होते हैं:
- मूल सागा ID या लेन-देन ID।
- उस मूल कार्रवाई का विवरण जिसे उलटना आवश्यक है।
- उलटाव करने के लिए आवश्यक कोई भी डेटा (जैसे वापस की जाने वाली राशि या अनारक्षित की जाने वाली वस्तु)।
उदाहरण: ऑर्डर संसाधन सागा
ऑनलाइन ऑर्डर प्रक्रिया पर विचार कीजिए:
- ऑर्डर सेवा: ऑर्डर बनाती है (
OrderCreatedप्रकाशित करती है) - भुगतान सेवा: भुगतान संसाधित करती है (
PaymentProcessedप्रकाशित करती है) - इन्वेंटरी सेवा: स्टॉक आरक्षित करती है (
InventoryReservedप्रकाशित करती है)
यदि इन्वेंटरी सेवा स्टॉक आरक्षित करने में विफल हो जाए तो क्या होगा?
रोलबैक शुरू करना
यदि इन्वेंटरी सेवा स्टॉक आरक्षित करने में विफल हो जाती है, तो उसे यह करना चाहिए:
- नहीं
InventoryReservedप्रकाशित करना चाहिए। - इसके बजाय,
InventoryReservationFailedजैसा प्रतिपूरक इवेंट प्रकाशित करना चाहिए।
यह इवेंट अन्य सेवाओं को संकेत देता है कि सागा सफलतापूर्वक पूरी नहीं हो सकी और उन्हें अपने कार्य पूर्ववत करने होंगे।
भुगतान सेवा की प्रतिपूर्ति
भुगतान सेवा उन इवेंट की सदस्यता लेती है जो विफलताओं का संकेत देते हैं। जब इसे InventoryReservationFailed प्राप्त होता है, तो उसे पता होता है कि उसे कार्रवाई करनी है:
- यह पहले संसाधित किए गए भुगतान की राशि वापस करने की प्रक्रिया शुरू करेगी।
- राशि वापस करने के बाद, यह अन्य इच्छुक सेवाओं को सूचित करने के लिए
PaymentRefundedजैसा नया इवेंट प्रकाशित कर सकती है।
ऑर्डर सेवा की प्रतिपूर्ति
ऑर्डर सेवा ने प्रारंभिक ऑर्डर बनाया था, इसलिए उसे भी प्रतिक्रिया देनी होगी। यह InventoryReservationFailed या PaymentRefunded को सुन सकती है।
- ऐसा इवेंट प्राप्त होने पर, ऑर्डर सेवा ऑर्डर की स्थिति को 'रद्द' या 'विफल' में बदल देती है।
- इससे यह सुनिश्चित होता है कि उपयोगकर्ता को अपने ऑर्डर की सही स्थिति दिखाई दे।
प्रतिपूर्ति तर्क लागू करना
प्रत्येक सेवा में सफल आगे की प्रगति वाले इवेंट और विशिष्ट प्रतिपूरक इवेंट—दोनों को संभालने का तर्क होना चाहिए। अक्सर इसका अर्थ प्रत्येक के लिए अलग-अलग इवेंट हैंडलर रखना होता है।
यहाँ एक सरल उदाहरण है कि भुगतान सेवा किसी प्रतिपूरक इवेंट को सुनकर राशि वापस करने की प्रक्रिया कैसे शुरू कर सकती है:
public class PaymentService {
public static void main(String[] args) {
System.out.println("Payment Service Started.");
// Simulate receiving an event from a message broker
String receivedEvent = "InventoryReservationFailed: Order123";
if (receivedEvent.startsWith("InventoryReservationFailed")) {
String orderId = receivedEvent.split(":")[1];
System.out.println("Received compensation event: " + receivedEvent);
System.out.println("Initiating refund for Order ID: " + orderId + "...");
// In a real system, call a payment gateway API to refund
boolean refundSuccess = processRefund(orderId);
if (refundSuccess) {
System.out.println("Refund processed successfully for " + orderId + ".");
// Publish 'PaymentRefunded' event for other services
System.out.println("Publishing PaymentRefunded event.");
} else {
System.out.println("Refund failed for " + orderId + ".");
// Handle refund failure (e.g., alert, manual intervention)
}
} else {
System.out.println("No compensation event received yet.");
}
System.out.println("Payment Service Shutting Down.");
}
private static boolean processRefund(String orderId) {
// Simulate external refund API call
return true; // Assume success for this example
}
}त्वरित जाँच: प्रतिपूर्ति का उद्देश्य
कोरियोग्राफी सागा में, यदि 'इन्वेंटरी सेवा' 'भुगतान सेवा' द्वारा भुगतान संसाधित किए जाने के बाद वस्तुओं को आरक्षित करने में विफल हो जाती है, तो 'इन्वेंटरी सेवा' द्वारा InventoryReservationFailed इवेंट प्रकाशित करने का मुख्य उद्देश्य क्या है?
पुनरावलोकन: प्रतिपूर्ति संभालना
आपने सीखा कि वितरित प्रणालियों में डेटा की सुसंगतता बनाए रखने के लिए कोरियोग्राफी सागा में प्रतिपूर्ति कितनी महत्वपूर्ण है। मुख्य बातें:
- सागा का कोई चरण विफल होने पर प्रतिपूर्ति सफल कार्यों को उलट देती है।
- कोरियोग्राफी में सेवाएँ रोलबैक शुरू करने के लिए विशिष्ट प्रतिपूरक इवेंट प्रकाशित करती हैं।
- प्रत्येक सेवा को इन इवेंट को सुनने और उन पर प्रतिक्रिया देने का तर्क लागू करना चाहिए तथा अपने पूर्व कार्यों को स्वयं पूर्ववत करना चाहिए।
- स्पष्ट इवेंट डिज़ाइन और मजबूत प्रबंधन लचीली सागा के लिए आवश्यक हैं।
एआई शिक्षक के साथ माइक्रोसर्विस संचार पैटर्न (Saga, Circuit Breaker) सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 12
- पाठ
- 48
अक्सर पूछे जाने वाले प्रश्न
क्या “इवेंट के साथ प्रतिपूर्ति संभालना” पाठ निःशुल्क है?
हाँ—“इवेंट के साथ प्रतिपूर्ति संभालना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और माइक्रोसर्विस संचार पैटर्न (Saga, Circuit Breaker) पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। माइक्रोसर्विस संचार पैटर्न (Saga, Circuit Breaker) पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“इवेंट के साथ प्रतिपूर्ति संभालना” में मैं क्या सीखूँगा?
पिछली कार्रवाइयों को उलटने के लिए विशिष्ट रोलबैक इवेंट प्रकाशित करके Choreography Saga में प्रतिपूर्ति चरण लागू कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ माइक्रोसर्विस संचार पैटर्न (Saga, Circuit Breaker) का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या माइक्रोसर्विस संचार पैटर्न (Saga, Circuit Breaker) शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर माइक्रोसर्विस संचार पैटर्न (Saga, Circuit Breaker) शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“इवेंट के साथ प्रतिपूर्ति संभालना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस माइक्रोसर्विस संचार पैटर्न (Saga, Circuit Breaker) पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर माइक्रोसर्विस संचार पैटर्न (Saga, Circuit Breaker) पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- इवेंट-आधारित Sagas का अभिकल्पन
- इवेंट बस और संदेश ब्रोकर
- इवेंट के साथ प्रतिपूर्ति संभालना
- आइडेम्पोटेंट इवेंट उपभोक्ता बनाना