कोई क्रिया तब इडेम्पोटेंट है जब उसे दो बार चलाने पर दुनिया वैसी ही बचे जैसी एक बार चलाने पर बची थी। फ़ाइल मिटाना इडेम्पोटेंट है। संदेश भेजना नहीं, और इसी असंतुलन में दोहरे संदेश वाली ज़्यादातर गड़बड़ियाँ बसती हैं।
यह असल में कहाँ चाहिए
- वेबहुक हैंडलरों में, क्योंकि डिलीवरी कम-से-कम एक बार होती है और दोहराव सामान्य है।
- हर उस चीज़ में जिसे आप समय ख़त्म होने के बाद दोबारा चलाते हैं, क्योंकि समय का ख़त्म होना यह नहीं बताता कि लिखाई पहुँची या नहीं।
- हर उस चीज़ में जिसे कतार दोबारा भेज सकती है, यानी हर कतार में।
इसे सस्ते में कैसे पाएँ
उन आईडी की एक तालिका रखिए जिन पर आप पहले ही अमल कर चुके हैं, और काम करने से पहले उसमें यूनीक बंदिश के साथ डालिए। अगर डालना नाकाम हो, तो इसे कोई पहले ही निपटा चुका है। बस यही पूरी तकनीक है; इसे किसी लाइब्रेरी की ज़रूरत नहीं और यह बीच में हुए रीस्टार्ट से बच जाती है, जिससे स्मृति वाली किस्म नहीं बचती।
पहले डालिए, बाद में नहीं। बाद में डालने से काम करने और यह दर्ज करने के बीच एक खिड़की बचती है कि आपने किया, और उसी खिड़की में हुआ क्रैश ठीक वही हालत है जिसे यह तालिका ढँकने के लिए थी।
आईडी के तौर पर क्या लें
भेजने वाला घटना को जो कहे, अगर वह नाम देता है। न दे, तो उन फ़ील्डों से कुंजी बनाइए जो घटना को वही घटना बनाते हैं — मान लीजिए खाता, बातचीत और संदेश — और उसका हैश लीजिए। समय-मुहर से निकली कुंजी कुंजी नहीं है: दोहराव की अलग होती है।
इडेम्पोटेंसी इंटरफ़ेस में दोहराव छाँटना नहीं है। जब तक दोहरी चीज़ किसी स्क्रीन तक पहुँचती है, दूसरा संदेश आप भेज चुके होते हैं। जाँच हैंडलर के सबसे ऊपर बैठती है, कुछ भी बाहर जाने से पहले।
अक्सर पूछे जाने वाले सवाल
क्या AI एजेंट डुप्लिकेट की संभावना बढ़ाते हैं?
बढ़ा सकते हैं। जिस AI एजेंट से दो बार कहा जाए वह दो बार भेज सकता है, और जो टाइमआउट के बाद दोबारा कोशिश करे उसे शायद पता न हो कि पहली कोशिश चल गई थी। उसके निर्देशों में एक नियम दीजिए — दोबारा भेजने से पहले बातचीत पढ़कर देखिए — और भेजने की मंज़ूरी किसी व्यक्ति के पास रहने दीजिए।
क्या प्रोजेक्ट रूम का “लागू कीजिए” बटन इडेम्पोटेंट है?
रूम में एक सुझाव सिर्फ़ एक बार चलता है। उस पर दूसरी बार लागू कीजिए दबाने से कुछ नहीं बदलता।