2014-04-07 5 views
17

Azure WebJobs SDK가 비동기 메서드를 트리거 할 수 있는지 궁금합니다.Azure WebJobs - 비동기 메서드를 사용할 수 있습니까?

class Program 
{ 
    static void Main(string[] args) 
    { 
     var host = new JobHost(); 
     host.RunAndBlock(); 
    } 

    public static void ProcessStuff([QueueInput("myqueue")] string msg) 
    { 
     var tsk = ProcessStuffAsync(msg) 
        .ContinueWith(x => HandleAsyncError(x), 
         TaskContinuationOptions.OnlyOnFaulted); 
     tsk.Wait(); 
    } 

    public static async Task ProcessStuffAsync(string msg) 
    { 
     // do some async stuff and await it 
    } 

    // other methods ... 
} 

을하지만 난 그냥 JobHost 대신 내 비동기 메서드를 호출 알고있을 수 있다면, 내가 궁금 해서요 : 현재 나는 다음과 같은 방법이 있나요? WebJobs에서 async/await를 사용하려고 할 때 많은 문서가 없으며, 가능하다면 정말 좋을 것입니다.

내가 테스트 로컬로 실행하려고 해요 ...하지만 WebJobs SDK는 로컬 저장 장치 에뮬레이터를 지원하지 않습니다 ...

UPDATE 2014년 4월 7일 : 빅터의 대답은 정확하지만 WebJob에서 비동기 메서드를 사용하면 무엇을 볼 수 있는지 보여주고 싶었습니다. 다음과 같은 당신의 WebJob의 방법

는 :

running in pid: 6272 
Timestamp:4:36:02 PM 
Parameters bound. Invoking user function. 
-------- 
Warning: This asynchronous method will be run synchronously. 
Processing Message Async... 
a test message 
-------- 
Success 
+0

시도해보고 알려주세요. –

+1

@StephenCleary는 현재이 작업을하고 있습니다. 다른 누군가가 이미 성공적으로 완료했다면 모든 하늘색 저장소/웹 사이트 계정 및 구성을 설정하지 않는 것이 좋습니다. – ericb

+1

가능한 [Azure WebJob 기능에서 비동기를 수행하는 방법]의 가능한 복제본 (http://stackoverflow.com/questions/38249919/how-to-do-async-in-azure-webjob-function) –

답변

20

비동기가 지원됩니다 :

public async static Task ProcessMessageAsync([QueueInput("testq2")] string message) 
{ 
    await Task.Delay(50); 

    Console.WriteLine("Processing Message Async..."); 
    Console.WriteLine(message); 
} 

당신은 당신의 WebJobs에서 다음과 같은 출력 로그를 볼 수 있습니다. 블로그 게시물 here을 참조하십시오.

불행히도 두 질문에 대한 짧은 대답은 지원되지 않습니다.

(약간) 더 이상 답 :

WebJobs SDK는 비동기 방식을 지원하지 않습니다. 실행 로그 (대시 보드)를 보면 비동기 함수 (Task 또는 Task<>을 반환하는 함수)가 동 기적으로 실행된다는 경고가 표시됩니다.

로컬 에뮬레이터를 지원하지 않습니다. 개발시 실제 스토리지 계정을 사용해야합니다.

+1

"비동기를 지원하지 않습니다. 방법 * 아직 * ", 맞죠? ;) –

+0

@VictorHurdugaci - 여기 내 목표는 내 공유/타사 라이브러리의 비동기 메서드를 사용할 수 있어야한다는 것입니다. JobHost가 동 기적으로 처리하면, 지금은 괜찮습니다. – ericb

+2

@StephenCleary 향후 릴리스에서이 기능을 고려하고 있습니다. –

5

시간이 지남에 따라 대답은 지금 yes, you can입니다!

+0

다음은 공식 링크입니다. http://azure.microsoft.com/blog/2014/08/21/announcing-the-0-4-0-beta-preview-of-microsoft-azure-webjobs-sdk/ –