में विभिन्न अंतराल पर कार्य करें मेरे पास एक साधारण Azure वर्कर भूमिका चल रही है जो हर कुछ सेकंड में कार्य करती है। नीचे वह कोड है जो इसे पूरा करता है।Azure वर्कर रोल
public override void Run()
{
try
{
while (true)
{
DoSomething();
System.Threading.Thread.Sleep(3000);
}
}
catch (Exception ex)
{
Log.Add(ex, true);
}
}
मैं अब क्या करना चाहते हैं क्या एक दूसरे कार्य DoSomethingElse() है कि एक बार और प्रतिदिन केवल एक बार आग जोड़ने है।
- एक काउंटर है कि नए कार्य कॉल हर वें पाश
- नया कार्य की एक निर्धारित समय के लिए वर्तमान समय तुलना करने के लिए सशर्त तर्क जोड़ें: मैं तरीके पूरा करने के लिए इस की एक जोड़ी के बारे में सोचा गया है दिन
- (जैसे Quartz.NET के रूप में)
कुछ TBD अनुसूचक पुस्तकालय का उपयोग पहले दो समाधान के रूप में मुझे बहुत भंगुर हड़ताल अतिरिक्त कोड के बिना स्थितियों में, जहां सेवा बंद कर दिया और पुन: प्रारंभ होने से निपटने के लिए। तीसरा समाधान मुझे संभावित रूप से ओवरकिल के रूप में मारता है।
मेरा सवाल है, Azure वर्कर रोल के भीतर विभिन्न अंतराल पर कार्यों को शेड्यूल करने का सबसे अच्छा अभ्यास क्या है? मुझे सीधे .NET के साथ चिपकने और तीसरे पक्ष की लाइब्रेरी का उपयोग नहीं करने के लिए थोड़ी वरीयता है (हालांकि मैं इसे बाहर नहीं कर रहा हूं)।
ध्यान दें, ऊपर # 3 इस पुराने सवाल Recommend a C# Task Scheduling Library
चलो इस पल के लिए कहें कि मैं निष्पादन डेटा को SQL Azure डेटाबेस में जारी रखता हूं। मैं DoSomethingElse() में एक साधारण चेक बना सकता हूं जो यह निर्धारित करने के लिए डेटाबेस को पिंग करता है कि कार्य आखिरी बार कब चलाया गया था। इसका मतलब यह होगा कि प्रत्येक 3 सेकंड में जांच करने के लिए डेटाबेस को पिंग करना होगा। क्या यह एक बुरा विचार है? यह डेटाबेस के लिए बहुत अनावश्यक यात्रा है। लेकिन फिर डेटाबेस सर्वर को ऐसे छोटे लेनदेन से परेशान होने की संभावना नहीं है। विचार? – hughesdan