2014-09-30 7 views
13

मैं Azure WebJobs के लिए नया हूँ, मैं एक नमूना जहां एक उपयोगकर्ता ब्लॉब भंडारण के लिए एक छवि अपलोड करती है और कतार में एक रिकार्ड सम्मिलित करता है को चलाने की है, तो काम पुन: प्राप्त करता है कि कतार से एक संकेत का आकार बदलने की तरह कुछ करने के लिए के रूप में अपलोड की गई छवि। मूल रूप से कोड में नौकरी QueueTrigger विशेषता को सार्वजनिक स्थिर विधि पर करने के लिए उपयोग करती है।Azure WebJobs - कोई फ़ंक्शन नहीं मिला - मैं ट्रिगर-कम नौकरी कैसे बना सकता हूं?

अब मुझे लगता है कि सिर्फ एक डेटाबेस तालिका में हर घंटे एक रिकार्ड डालने की तरह कुछ करता है एक नौकरी की जरूरत है, यह ट्रिगर के किसी भी प्रकार नहीं है, यह सिर्फ खुद चलाता है। मैं यह कैसे करु?

मैं एक स्थिर विधि करने की कोशिश की और उस में मैं db से, काम शुरू किया डालने करना है लेकिन मुझे यह संदेश मिल गया:

नहीं कार्यों पाया। नौकरी कक्षाओं को सार्वजनिक बनाने और विधियों को सार्वजनिक बनाने का प्रयास करें स्थिर।

मैं क्या याद आ रही है?

संपादित के बाद विक्टर का जवाब मैंने कोशिश के बाद,

static void Main() 
{ 
    JobHost host = new JobHost(); 
    host.Call(typeof(Program).GetMethod("ManualTrigger")); 
} 

[NoAutomaticTrigger] 
public static void ManualTrigger() 
{ 
    // insert records to db 
} 

लेकिन इस बार मैं InvalidOperationException मिला,

'शून्य ManualTrigger()' Azure WebJobs से लागू नहीं किया जा सकता एसडीके। क्या यह Azure WebJobs एसडीके विशेषताओं को याद कर रहा है?

उत्तर

13

आप WebJobs एसडीके (QueueTrigger, ब्लॉब, टेबल, आदि) से किसी भी इनपुट/आउटपुट विशेषताओं का उपयोग नहीं करते हैं, तो आप एसडीके द्वारा मान्यता प्राप्त होना करने की विशेषता NoAutomaticTrigger साथ काम को सजाने के लिए है।

+0

धन्यवाद विक्टर आपके उत्तर के लिए, मैं NoAutomaticTrigger की कोशिश की और एक InvalidOperationException मिला है, मैं कोड मैं साथ मेरे सवाल को नवीनीकृत किया है, तो आप मैं गलत क्या कर रही हूं कृपया देखने के लिए मदद कर सकता है। आपका बहुत बहुत धन्यवाद! –

+3

क्या आप एसडीके का उपयोग कर रहे हैं? क्या कक्षा सार्वजनिक है? –

+3

आह आप सही हैं, मैंने अभी "कक्षा कार्यक्रम" पर "सार्वजनिक" घोषित किया है, यह चलता है हालांकि यह कुछ सेकंड के लिए नीचे दिया गया संदेश दिखाता है और फिर कंसोल विंडो बस क्रैश हो जाती है। संदेश: "मिले निम्नलिखित समारोह: WebJob1.Program.ManualTrigger निष्पादित: 'Program.ManualTrigger' क्योंकि यह था समारोह प्रोग्राम के रूप में मेजबान API के द्वारा कहा जाता है WAAS।" –

2

आप नवीनतम WebJobs एसडीके है, जो समय पर नौकरी कार्यों को ट्रिगर का समर्थन करता है, एक ही क्रॉन अभिव्यक्ति प्रारूप पर आधारित इस्तेमाल कर सकते हैं। आप अपने काम को हर घंटे का समय निर्धारित करने के लिए इसका इस्तेमाल कर सकते हैं:

[Disable("DisableMyTimerJob")] 
public static void TimerJob([TimerTrigger("00:01:00")] TimerInfo timerInfo, TextWriter log) 
{ 
    log.WriteLine("Scheduled job fired!"); 
} 

इसके अलावा, WebJobs एसडीके भी एक DisableAttribute कि कार्यों के लिए लागू किया जा सकता है, तो आप/सक्षम करने के लिए आवेदन सेटिंग के आधार पर अक्षम कार्यों की अनुमति देता है कि है। यदि आप Azure प्रबंधन पोर्टल में ऐप सेटिंग बदलते हैं, तो नौकरी फिर से शुरू की जाएगी (https://azure.microsoft.com/en-us/blog/extensible-triggers-and-binders-with-azure-webjobs-sdk-1-1-0-alpha1/)।

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