2015-06-19 5 views
6

एज़ूर वेबजब्स के बारे में वेब पर बहुत सारी जानकारी पढ़ने के बाद, दस्तावेज कहता है कि एक नौकरी बेवकूफ होनी चाहिए, दूसरी तरफ, ब्लॉग्स का कहना है कि वे वेबजब्स का उपयोग "ग्राहक को चार्ज करने" जैसे कार्यों को करने के लिए करते हैं, "एक ई-मेल भेजना" ।कैसे निरंतर Azure वेब नौकरियां बेवकूफ हो सकती हैं और ईमेल भेज सकती हैं?

This documentation का कहना है कि एक कतार के साथ कई उदाहरणों पर निरंतर वेबजोब चलाने से परिणामस्वरूप एक से अधिक बार बुलाया जा सकता है। क्या लोग वास्तव में इस तथ्य को अनदेखा करते हैं कि वे अपने ग्राहक को दो बार चार्ज कर सकते हैं, या दो बार ई-मेल भेज सकते हैं?

मैं कैसे सुनिश्चित कर सकता हूं कि मैं एक स्केल किए गए वेब ऐप पर कतार के साथ वेबजोब चला सकता हूं और संदेशों को केवल एक बार संसाधित किया जाता है?

उत्तर

1

मैं इसे डेटाबेस का उपयोग करके, एक पंक्ति लॉक और ट्रांज़ेक्शनस्कोप ऑब्जेक्ट के साथ एक अद्यतन क्वेरी करता हूं।

अपनी ऑर्डर तालिका में, अपने वेबजोब में आपके द्वारा की जा रही कार्रवाई की स्थिति का प्रबंधन करने के लिए एक कॉलम बनाएं। यानी ईमेलसेन्ट।

क्यूई ट्रिगर फ़ंक्शन में एक लेनदेन शुरू होता है, फिर ROWLOCK सेट के साथ ग्राहक आदेश पर एक अद्यतन क्वेरी निष्पादित करें, जो ईमेलसेन्ट = 1 को WHERE ईमेलसेन्ट = 0 के साथ सेट करता है। यदि SqlCommand = 0 से वापसी मान फ़ंक्शन से बाहर निकलें। एक अन्य वेबजोब पहले से ही ईमेल भेज चुका है। अन्यथा, सफलतापूर्वक भेजे जाने पर, लेनदेनस्कोप ऑब्जेक्ट पर ईमेल भेजें और पूर्ण() को कॉल करें।

जो आपको इच्छित मूर्खता प्रदान करना चाहिए।

उम्मीद है कि मदद करता है।

+1

मैंने इसे अपने अंतिम समाधान के रूप में सोचा। हालांकि, असफलताओं को कैसे प्रबंधित किया जाता है? यदि सर्वर में से कोई भी विफलता पूर्ण नहीं करता है और कोई ई-मेल नहीं भेजा जाता है, तो दूसरा सर्वर पूरा नहीं होता है और त्रुटि होती है, विफलता यहां कैसे प्रबंधित की जाएगी? क्या यह फिर से ट्रिगर होगा? जहर जाओ? या पूरी तरह से त्रुटि को अनदेखा करें? मुझे लगता है कि यह माइक्रोसॉफ्ट से आधा किया गया फीचर है। लॉक एसडीके स्तर पर लागू किया जाना चाहिए। – jsgoupil

+0

मुझे पता है कि यह एक पुराना सवाल है लेकिन आप अतिरिक्त रूप से उस तालिका में एक टाइमस्टैम्प जोड़ सकते हैं ताकि जब आप लॉक हो जाए तो लॉग इन कर सकें ताकि यदि टाइमस्टैम्प एक्स मिनट से अधिक पुराना हो, तो मान लें कि यह असफल हो गया है और अगले संदेश को संसाधित करने की अनुमति देने के लिए इसे साफ़ करें यह। आप सही हैं कि यह एसडीके में पूरी तरह कार्यान्वित नहीं है लेकिन यह ऐसा कुछ नहीं है जो एसडीके स्वयं ही संभाल सकता है क्योंकि हर स्थिति अलग होती है। मेरा मतलब है, क्या होगा यदि आपके पास SQL ​​सर्वर डेटाबेस नहीं है? आपको स्पष्ट रूप से एक अलग समाधान होना है। और एसडीके कैसे पता चलेगा कि गुंजाइश का दायरा क्या है? फिर, यह केस-दर-मामले आधार पर बदलता है। – Jaxidian

संबंधित मुद्दे