2015-06-18 8 views
5

मेरे पास एक QueueTrigger के साथ, Azure पर एक webjob है। नौकरी लंबी है (30 मिनट से अधिक)Azure WebJob QueueTrigger इसे प्राप्त करने के बाद हटाएं मैसेज?

public async static Task ProcessQueueMessageAsync([QueueTrigger(QUEUENAME)] string iJobId) 
{ 
//doing my long job 
} 

मेरी समस्या यह है कि कतार में संदेश को ट्रिगर करने के बाद कैसे हटाएं। संदेश एक समय तक अदृश्य हो जाता है (डिफ़ॉल्ट रूप से 30s) आता है। मेरी नौकरी अवधि में बहुत कम है। तो मुझे लगता है कि मुझे ट्रिगर विधि की शुरुआत में संदेश को हटाना होगा। मुझे लगता है कि जब आप GetMessage() विधि को ट्रिगर करने के साथ लूप करते हैं तो मुझे यह कैसे करना है। लेकिन ट्रिगर के साथ इसे कैसे करें, क्योंकि मेरे पास .DeleteMessage() चलाने के लिए संदेश ऑब्जेक्ट नहीं है?

उत्तर

3

Answered by Michael Curd on the MSDN Forums, और यहाँ उद्धृत किया:

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

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