मैं ईमेल भेजने के लिए एक कतार सेवा के रूप में मोंगोडब का उपयोग कर रहा हूं। जल्द ही यह निम्नलिखित तरीके से काम करेगा:
- जब कोई नया संदेश आता है तो मैं उसे मोंगोडब में संग्रहीत करता हूं।
- एक बैकग्राउंड जॉब फिर परमाणु ऑपरेशन के माध्यम से मोंगोडब से संदेश को लोड करता है findAndModify और फ्लैग सेट करता है
Processingसच है, इसलिए यह एक ही संदेश को दो बार संसाधित नहीं करता है (क्योंकि मेरा बैकग्राउंड जॉब समानांतर में कई थ्रेड चलाता है)। - एक बार ईमेल भेजे जाने के बाद मैं दस्तावेज़ को mongodb से हटा देता हूँ।
- आप प्रत्येक संदेश के लिए विफलताओं की गिनती भी रख सकते हैं और 3 विफल प्रयासों के बाद इसे हटा सकते हैं।
आम तौर पर मैं केवल एक कारण के लिए कतार सेवा के रूप में mongodb का उपयोग करता हूं:क्योंकि मुझे निर्दिष्ट समय-सारणी द्वारा ईमेल भेजने की आवश्यकता होती है (प्रत्येक संदेश में यह जानकारी होती है कि इसे किस समय भेजा जाना चाहिए)।
यदि आपके पास कोई शेड्यूल नहीं है और संदेश को तुरंत संसाधित करने की आवश्यकता है, तो मेरा सुझाव है कि आप मौजूदा कतार सेवाओं को देखें, क्योंकि वे संभवतः उन सभी मामलों को संभालती हैं जिन्हें आप संदेश कतारों की गहरी समझ के बिना नहीं देख सकते हैं।
अपडेट करें
जब मैसेज प्रोसेसिंग के दौरान बैकग्राउंड जॉब क्रैश हो जाता है तो आप निम्न कार्य कर सकते हैं:
-
इस संदेश को दूसरे में ले जाएं, संदेश कतार त्रुटि संग्रह या ..
-
एक संदेश में प्रसंस्करण प्रयास काउंटर बढ़ाएँ और इसे फिर से संसाधित करने का प्रयास करने के लिए "नया" स्थिति निर्दिष्ट करें। बस यह सुनिश्चित करें कि बैकग्राउंड जॉब बेकार है (एक ही संदेश को कई बार प्रोसेस कर सकता है और डेटा को दूषित नहीं कर सकता) और ट्रांजेक्शनल (जब जॉब फेल हो जाता है तो आपको किए गए परिवर्तनों को पूर्ववत करना होगा। यदि कोई हो)। जब 5 प्रयासों के बाद नौकरी विफल हो जाती है (कॉन्फ़िगरेशन मान) # 1 प्रदर्शन करें।
-
एक बार संदेश प्रसंस्करण के साथ बग ठीक हो जाने के बाद आप "नई" स्थिति निर्दिष्ट करके और संदेश कतार में जाकर इसे फिर से संसाधित कर सकते हैं, या बस इस संदेश को हटा सकते हैं। यह वास्तव में व्यावसायिक प्रक्रियाओं पर निर्भर करता है।