2013-01-11 9 views
12

मैं अपने node.js एप्लिकेशन में देरी की नौकरियों के लिए kue का उपयोग कर रहा हूं।Node.js Kue विफल नौकरियों को पुनरारंभ करने के लिए कैसे करें

मुझे यह पता लगाने में कुछ समस्याएं हैं कि कैसे मैं क्यूई के एपीआई का उपयोग करके नौकरी की आईडी को मैन्युअल रूप से असफल नौकरियों की सूची से रेडिस कमांड का उपयोग करके निष्क्रिय नौकरियों की सूची में स्थानांतरित करने के बिना नौकरी को फिर से शुरू कर सकता हूं।

क्या यह संभवतः क्यू का उपयोग कर संभव है?

मैं एक निश्चित संख्या में पुनः प्रयास प्रयास नहीं करना चाहता - मैं बस विशिष्ट नौकरियों को पुनः प्रयास करना चाहता हूं।

क्यू के लिए एक अच्छी तरह से बनाए रखा विकल्प के लिए सुझाव भी स्वागत है।

उत्तर

11

मुझे नहीं पता है कि अगर यह काम कर रहा है, लेकिन आप सक्रिय करने के लिए काम की स्थिति को रीसेट करने के लिए काम पुन: प्रयास करें, और बचा सकता है:

job.on('failed', function() { 
    job.state('inactive').save(); 

संपादित करें: निष्क्रिय करने के लिए सही ढंग से फिर से कतारबद्ध होगा राज्य की स्थापना कार्य।

+1

धन्यवाद! इसे "सक्रिय" के बजाय "निष्क्रिय" पर सेट करने की आवश्यकता है अन्यथा यह अब संसाधित नहीं होगा। कोड पर एक नज़र डालें और राज्य को बदलने का विचार इस तरह से दिए गए सूची में नौकरी को फिर से सौंपेगा। – Matthias

3

यह कतार स्तर की घटनाओं का उपयोग करके भी किया जा सकता है।

queue.on('job failed', function(id, result) { 
    kue.Job.get(id, function(err, job) { 
     if (!err && shouldRetry(job)) 
      job.state('inactive').save(); 
    }); 
}); 

इस प्रकार आपको हर नौकरी के लिए ऐसा करने की आवश्यकता नहीं है जिसे आप पुनः प्रयास करना चाहते हैं। इसके बजाय आप इसे कतार स्तर की घटना में फ़िल्टर कर सकते हैं।

0

सरकारी डॉक्स

डिफ़ॉल्ट नौकरियों तक में विफलता के प्रयास को देखने के केवल एक प्रयास है, वह यह है कि जब वे असफल हो, वे एक विफलता के रूप में चिह्नित कर रहे हैं, और इस तरह से जब तक आप हस्तक्षेप रहते हैं। हालांकि, क्यू आपको यह निर्दिष्ट करने की अनुमति देता है, जो नौकरियों के लिए महत्वपूर्ण है जैसे कि ईमेल को स्थानांतरित करना, जो विफलता पर, आमतौर पर बिना किसी समस्या के पुनः प्रयास कर सकता है। ऐसा करने के लिए .attempts() विधि को किसी संख्या के साथ आज़माएं।

queue.create('email', { 
    title: 'welcome email for tj' 
    , to: '[email protected]' 
    , template: 'welcome-email' 
}).priority('high').attempts(5).save(); 

संदर्भ: failure attempts

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