2014-10-28 6 views
8

एज़ूर वेबजब्स एसडीके का उपयोग करके, मैं एक एसिंक फ़ंक्शन बनाना चाहता हूं जो सर्विसबस कतार इनपुट प्राप्त करेगी और सर्विसबस कतार आउटपुट पर लिखें। Async विधियों में पैरामीटर नहीं हो सकते हैं, जो ब्लॉबस्टोरेज पर उदाहरणों के लिए स्ट्रीम और टेक्स्टवाइटर के बजाय काम करते हैं। हालांकि, जब मैं सर्विसबस पैरामीटर के साथ ऐसा करने का प्रयास करता हूं तो मुझे अपवाद मिलता है।मेरे पास एक Async फ़ंक्शन कैसे है जो सेवा बस कतार में लिखता है?

public static async void Transform(
    [ServiceBusTrigger("%InputQueue%")] String input, 
    [ServiceBus("%OutputQueue%")] TextWriter output, 
    TextWriter log) 

त्रुटि अनुक्रमण विधि 'FilterCurrentCpesToNewCpes'

बाध्य नहीं किया जा सकता ServiceBus टाइप करने के लिए 'System.IO.TextWriter'।

मुझे स्ट्रीम के लिए एक समान संदेश मिलता है।

उत्तर

12

चूंकि Async फ़ंक्शंस पैरामीटर नहीं हो सकता है, इसलिए आप ICollector<T> या IAsyncCollector<T> से जुड़ सकते हैं और संदेश भेजने के लिए जोड़ें() ऑपरेशन कर सकते हैं। ICollector WebJobs एसडीके में परिभाषित किया गया है।

निम्नलिखित नमूना यह दर्शाता है।

public static async void Transform(
[ServiceBusTrigger("%InputQueue%")] string input, 
[ServiceBus("%OutputQueue%")] IAsyncCollector<string> output, 
TextWriter log) 
    {    
     await output.AddAsync(input); 
    } 
संबंधित मुद्दे