2015-03-07 10 views
5

मेरे पास Azure कतार भंडारण का उपयोग करके 2 अलग-अलग प्रकार की कतारों को संसाधित करने के लिए दो differents परिदृश्य हैं।Azure कतार भंडारण का उपयोग कर कतार ट्रिगर प्रति कतार कॉन्फ़िगर करें

मैं एक के बाद एक को चलाने के लिए एक कतार सेट करना चाहता हूं, और दूसरा एक साथ चलाने के लिए।

मैं प्रलेखन को देख रहा हूं और मैं कतार की पूरी श्रृंखला को प्रभावित करने वाले होस्ट को कॉन्फ़िगरेशन लागू कर सकता हूं।

static void Main(string[] args) 
    { 
     JobHostConfiguration config = new JobHostConfiguration(); 
     config.Queues.BatchSize = 8; 
     config.Queues.MaxDequeueCount = 4; 
     config.Queues.MaxPollingInterval = TimeSpan.FromSeconds(15); 
     JobHost host = new JobHost(config); 
     host.RunAndBlock(); 
    } 

तो क्या मैं एक परिदृश्य भंडारण खाते का उपयोग कर उन परिदृश्यों को कॉन्फ़िगर कर सकता हूं?

उत्तर

1

आपके प्रश्न से, मैं समझता हूं कि आपके पास 2 कतार हैं और प्रत्येक कतार को विभिन्न कार्यों/नौकरियों को संसाधित करने के लिए उपयोग करने की आवश्यकता है।

आप इन तरीकों

1) 2 वेब नौकरियों तैनात पालन कर सकते हैं, प्रत्येक अलग कतारों पर प्रतीक्षा करें और जब भी संदेश संबंधित कतार पर दिखाई देता है इसी काम को गति प्रदान। ऊपर उल्लिखित कॉन्फ़िगरेशन कोड एक नौकरी के लिए आधार सेट करता है। और AFAIK, एक नौकरी एक कतार पर इंतजार कर सकते हैं। आप इस प्रकार का विधि Main() विधि

public static void ProcessQueueMessage([QueueTrigger("logqueue")] string logMessage) 
{ 
    //do something 
} 

2) यदि आप एक कतार से संदेश के आधार पर अनेक परिदृश्यों को गति प्रदान करना चाहते हैं हो सकता है, आप कर सकते हैं एक अगर ProcessQueueMessage पद्धति पर या यदि करने के लिए आप चाहते हैं किसी और ब्लॉक इसे अधिक प्रबंधित करने के लिए, ProcessQueueMessage

से सही विधि निष्पादित करने के लिए रणनीति पैटर्न का उपयोग करें यदि आप ऊपर # 1 का पालन करते हैं, तो आप प्रत्येक कार्य/नौकरी/परिदृश्य के लिए अलग-अलग वेब नौकरियां तैनात करेंगे। यदि आप ऊपर # 2 का पालन करते हैं, तो आप एक वेब नौकरी तैनात करेंगे और संदेश को संसाधित करते समय प्रत्येक संदेश का निर्णय लिया जाएगा।

कतार here पर प्रतीक्षा करने से संबंधित दस्तावेज़ीकरण।

[अपडेट]

कि हम जानते हैं एक वेब काम कतार पर इंतजार कर केवल एक ही पंक्ति पर इंतजार कर सकते हैं, इस मामले में सही दृष्टिकोण नहीं है। समय-समय पर वेब नौकरी को बेहतर ढंग से ट्रिगर करें (5 मिनट में एक बार कहें)। एकाधिक कतारों से संदेशों को हटाने और उन्हें संसाधित करने के लिए तर्क एक वेब नौकरी का हिस्सा होगा। प्रत्येक कतार प्रोसेसिंग एक विधि हो सकती है जिसे वेब द्वारा एक ही नौकरी कहा जाता है (एक के बाद एक या समवर्ती रूप से Task का उपयोग कर)। आप प्रत्येक कतार के लिए CloudQueue.GetMessages पर संदेश गिनती पास कर सकते हैं। यह विंडोज सेवा के समान ही होगा। बस ट्रिगरिंग भाग को वेब नौकरी से ख्याल रखा जाता है और यह विंडोज़ सेवा के बजाए वेब नौकरी के रूप में चलता है। यहाँ एक किसी न किसी स्यूडोकोड है:

main() 
{ 
    // initialize webjob 
} 
public static MyWebJobMethod(...) 
{ 
    Task a =() => {//process queue 1}; 
    Task b =() => {//process queue 2} 
    Task.WaitAll(a,b); 
} 
+0

आपके उत्तर के लिए धन्यवाद मुझे लगता है कि प्रलेखन प्रश्न पोस्ट करने से पहले देखा है, मैं और अधिक वेब नौकरियों तैनात करने के लिए ते विकल्प नहीं है, वास्तव में मैं एक खिड़कियों सेवा चल रहा हूँ यह वेब नौकरी की भूमिका पूरी तरह से ठीक कर रहा है, मुद्दा यह है कि मैं "कतार संदेशों की अधिकतम संख्या को एक साथ उठाया जा सकता हूं", प्रति कतार मान लें कि एक ट्रिगर उस समय एक को आग लगाना चाहिए और अन्य में डिफ़ॉल्ट कॉन्फ़िगरेशन हो सकता है। –

+0

http://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-storage-queues-how-to/#config –

+0

ने मेरा उत्तर अपडेट किया ... – Amit

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