2014-06-27 20 views
6

मेरे पास 0.3.0-बीटा वेबजब्स एसडीके का उपयोग कर वेबजोब में निम्न तर्क है। जब मेरा कोड संदेश को संसाधित करने में विफल रहता है, तो Azure डैशबोर्ड एक समग्र अपवाद दिखाता है (जो एसिंक है क्योंकि यह समझ में आता है)। हालांकि, यह संदेश संसाधित करने का पुनः प्रयास नहीं करता है।वेबजब्स असफल कतार संदेश पुनः प्रयास नहीं कर रहे हैं

बहुत कम documentation मैं यह इंगित करने में सक्षम हूं कि संदेश विफलता के 10 मिनट के भीतर पुनः प्रयास किया जाना चाहिए। क्या यह नया एसडीके के साथ मामला नहीं है?

public static Task ProcessMyMessageAsync(
    [QueueTrigger(Config.MY_QUEUE)] string msg, 
    int dequeueCount, 
    CancellationToken cancellationToken) 
{ 
    var processor = Config.Container.GetInstance<IMessageProcessor>(); 
    return processor.HandleJobAsync(msg, dequeueCount, cancellationToken); 
} 

अपवाद मैं एक एसक्यूएल समय समाप्त अपवाद (मेरे कोड में SQL Azure के खिलाफ अपने एक डाटाबेस क्वेरी) की वजह से उपजी:

System.AggregateException: System.AggregateException: One or more errors occurred. 
    ---> System.Data.Entity.Core.EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details. 
     ---> System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. 
     ---> System.ComponentModel.Win32Exception: The wait operation timed out 
+0

साथ एफई में पुन: प्रयास करने के लिए सक्षम हो सकता है? क्या आप अपवाद के बारे में अधिक जानकारी दे सकते हैं? –

+0

@VictorHurdugaci अपवाद जॉबहोस्ट या उसके जैसा कुछ भी नहीं प्रतीत होता है। यह निश्चित रूप से मेरे कोड के भीतर है और चूंकि यह एक एसक्यूएल टाइमआउट है, इसलिए मैं संदेश को पुनः प्रयास करना चाहता हूं। – ericb

उत्तर

0

आप MaxDequeueCount स्थापित करना चाहिए।

JobHostConfiguration jobHostConf = new JobHostConfiguration(); 
jobHostConf.Queues.MaxDequeueCount = 10; 
var host = new JobHost(jobHostConf); 
host.RunAndBlock(); 

यह मृत/बुरी पत्र कतार पर संदेश डालने से पहले 10 बार पुनः प्रयास करेगा।

आप फ़ंक्शन में कस्टम रीट्री नीति का भी उपयोग कर सकते हैं। मेरा सुझाव है कि आप "क्षणिक दोष हैंडलिंग आवेदन ब्लॉक" देखो https://msdn.microsoft.com/en-us/library/hh680934(v=pandp.50).aspx

या आप विफलता बाध्यकारी चरण के दौरान या अपने समारोह के अंदर होती है एक SqlAzureExecutionStrategy https://msdn.microsoft.com/en-us/data/dn456835.aspx

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