2015-06-02 6 views
7

में किसी निश्चित दिनांक पर किए जाने की आवश्यकता है, मैं Azure क्लाउड सेवा और वेब एपीआई का उपयोग कर एक एप्लिकेशन विकसित कर रहा हूं। मैं उन उपयोगकर्ताओं को अनुमति देना चाहता हूं जो परामर्श सत्र को उस सत्र की कीमत बदलने की क्षमता बनाते हैं, हालांकि मैं सभी उपयोगकर्ताओं को सत्र छोड़ने के लिए 30 दिनों की अनुमति देना चाहता हूं, इससे पहले कि नई कीमत वर्तमान में साइन अप किए गए सभी सदस्यों के मूल्य को प्रभावित करे सत्र। मेरा पहला विचार कतार भंडारण का उपयोग करना है और 30 दिनों की समय सीमा के लिए दृश्यता समय समाप्ति सेट करना है, लेकिन ऐसा लगता है कि यह समय के साथ वास्तव में कतार में तेजी से बढ़ सकता है, खासकर यदि संदेश 30 दिनों तक नहीं चलना चाहिए; आदेश मुद्दों का उल्लेख नहीं है। मैं कार्य शेड्यूलर को भी देख रहा हूं लेकिन सत्र मूल्य निर्धारण परिवर्तन आवर्ती अवधारणा नहीं बल्कि अधिक यादृच्छिक हैं। क्या कतार विचार एक अच्छा दृष्टिकोण है या क्या इसे पूरा करने के लिए एक बेहतर और अधिक प्रभावी तरीका है?कार्य जो Azure

+1

कृपया ध्यान दें कि Azure Queues पर अधिकतम संदेश TTL 7 दिन है। –

+1

मैंने देखा कि कतार भंडारण और सेवा बस कतारों की तुलना में आलेख में भी। इस परिदृश्य में, नौकरी को डेटाबेस तालिका में रखने और हर दिन जांचने का मेरा एकमात्र उपलब्ध विकल्प है? यह दृष्टिकोण डेटाबेस पर संसाधन नाली की तरह लगता है। – user1790300

उत्तर

3

मुझे लगता है कि यह परिदृश्य Azure शेड्यूलर का उपयोग करने के लिए अधिक उपयुक्त है। 30 दिनों बाद एक बार चलाने के लिए निर्धारित तिथि के साथ एक बार पुनरावृत्ति के साथ प्रोग्रामिक रूप से एक नौकरी बनाएं। एक बार जब यह कार्य शेड्यूलर द्वारा स्वचालित रूप से ट्रिगर हो जाता है, तो & अन्य आवश्यक अपडेट करने के लिए अपनी एपीआई/सेवा में से किसी एक को कॉलबैक करने के लिए एक क्रिया असाइन करें और इस कार्य के हिस्से के रूप में शेड्यूलर से इस नौकरी को क्लीन जॉब्स सूची के लिए हटा दें। वैसे भी एज़ूर शेड्यूलर जॉब कलेक्शन की प्रीमियम योजना आपको चलाने के लिए असीमित नौकरियां देगी।

आशा इस वास्तव में क्या आप मुझे Azure WebJobs उपयोग करने पर विचार के लिए ...

+1

आप यहां Azure शेड्यूलर की सीमाएं देख सकते हैं - https://github.com/Azure/azure-content/blob/master/articles/scheduler-plans-billing.md –

3

देख रहे थे होता है। एक WebJob मूल रूप से आपको एक Azure वेब ऐप के संदर्भ में .NET कंसोल एप्लिकेशन चलाने की क्षमता देता है। इसे मांग, निरंतर, या पुन: आवंटित अनुसूची के जवाब में चलाया जा सकता है। यदि आपकी प्रसंस्करण आवश्यकताएं कम हैं और इसके लिए अनुमति दें तो वे उसी प्रक्रिया में भी चल सकते हैं, जिस पर आपका वेब ऐप आपको $$$ बचाने के लिए चल रहा है क्योंकि वे इस तरह से स्वतंत्र हैं।

आप प्रति दिन एक या दो बार चलाने के लिए WebJob शेड्यूल कर सकते हैं और स्थिति की जांच कर सकते हैं और उचित के रूप में प्रतिक्रिया दे सकते हैं। चूंकि यह वास्तव में सिर्फ एक .NET कार्यकर्ता भूमिका है, जिसमें आपके पास अंतिम लचीलापन है।

4

जो सामान आप करने की कोशिश कर रहे हैं उसे एक रिलेशनल डेटाबेस के साथ किया जाना चाहिए। जब सत्र के लिए कीमतें बदल जाती हैं तो आप रिकॉर्ड करने के लिए टाइमस्टैम्प का उपयोग कर सकते हैं। मैं इसके लिए एक कतार का उपयोग नहीं करता। एक वितरित प्रणाली में संदेशों को पारित करने के लिए एक कतार अधिक है। आपकी समस्या यह जानने के बारे में है कि सत्र और कब पर कीमतें बदल गईं। उस डेटा को डेटाबेस में मॉडलिंग किया जाना चाहिए।

+0

यह दृष्टिकोण ऐसा लगता है कि यह सबसे साफ होगा, लेकिन अजीब पर्यावरण में मुझे अभी भी सभी बदलावों को खोजने के लिए प्रत्येक दिन चलाने के लिए शेड्यूलर का उपयोग करने की आवश्यकता नहीं होगी? – user1790300

+0

आपकी टिप्पणी के आधार पर "सत्र मूल्य निर्धारण परिवर्तन एक पुनरावर्ती अवधारणा नहीं है लेकिन अधिक यादृच्छिक नहीं है" - ऐसा लगता है जैसे लोग यादृच्छिक समय पर मूल्य निर्धारण जानकारी प्राप्त करने के लिए आपके एपीआई का उपयोग करेंगे। मैं वर्तमान कीमतों को कैश करने के लिए कैश का उपयोग करने का सुझाव देता हूं और कैश की समयसीमा समाप्त होने पर नई कीमतों को फिर से लागू करने के लिए पैटर्न के माध्यम से पढ़ना है। एक बार जब आप नई कीमतों का पुन: उपयोग कर लेते हैं तो उन्हें वापस कैश में डाल दें ताकि उन्हें अगली कॉल पर तुरंत पुनर्प्राप्त किया जा सके। आपके द्वारा कैश पर सेट किए गए टाइमआउट को अधिकतम कीमतों को फिर से तैयार किए बिना अधिकतम समय को प्रतिबिंबित करना चाहिए, दिन में कई घंटे शायद ठीक है। –