小编Dav*_*Wei的帖子

在webjob中使用等待异步调用时的WindowsAzure.Storage.StorageException

我在azure网站上使用webjob来处理占用大量内存的繁重进程.该进程后端执行大量Web调用,因此将其设计为异步.我希望webjob只处理每个实例的一个请求.我已经设置了Queues.BatchSize = 1选项来禁用webjob中的并行.但是,当我使用await来调用异步方法时,下一条消息仍然会立即从队列中获取,因为await并没有真正阻止当前线程,这对UI应用程序很有用,但不适用于我的情况.

所以我尝试使用wait来阻止当前线程,直到所有后端进程完成.但是,在该过程完成后抛出异常.似乎webjob在等待后删除队列存在问题.

我附上了简化的测试代码和例外.有任何想法吗?

非常感谢您的帮助!

名称空间ProcessWebJob {

public class Functions
{
    public static void ProcessQueueMessage([QueueTrigger("testQueue")] string message, TextWriter log)
    {
        try
        {
            testAsync ts = new testAsync();
            var task = Task.Run(async () => { await ts.test(); });
            task.Wait();
        }catch(Exception e){
           Trace.TraceInformation("error on processing the queue message" + e.InnerException);
        } 

    }
}

public class testAsync {
   public async Task<int> test()  
   {
        await Task.Delay(10000); //10 seconds delay
        return 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

}

[10/07/2015 17:57:14> 278796:错误]未处理的异常:Microsoft.WindowsAzure.Storage.StorageException:远程服务器返回错误:(404)Not Found.---> System.Net.WebException:远程服务器返回错误:(404)Not Found.[10/07/2015 17:57:14> 278796:ERR]在Microsoft.WindowsAzure.Storage.Shared.Protocol.HttpResponseParsers.ProcessExpectedStatusCodeNoException [T](HttpStatusCode …

queue asynchronous azure wait

5
推荐指数
0
解决办法
445
查看次数

标签 统计

asynchronous ×1

azure ×1

queue ×1

wait ×1