Azure存储CloudQueue.AddMessage()超时

时间:2018-05-28 08:09:09

标签: c# azure azure-storage azure-storage-queues

背景

我有一个Azure存储队列,用于在不同的微服务之间传输消息。从Nuget安装了WindowsAzure.Storage包(版本9.2.0)。

这是将新消息排队到队列的方式:

CloudQueueMessage message = new CloudQueueMessage(JsonConvert.SerializeObject(my_obj));
Queue.AddMessage(message);

问题

在99.9%的通话中,它运行良好。我不时会看到函数Queue.AddMessage()长期陷入困境。

上面的代码包含在一个计算执行时间的对象中。包装器由主线程运行,并在不同的线程中运行上面的代码。如果执行时间过长,主线程将中止正在运行的线程。在我的情况下,它运行180秒,然后包装器只是杀死线程。这导致注入ThreadAbortException

System.Threading.ThreadAbortException: Thread was being aborted.
   at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Core\Executor\Executor.cs:line 751
   at Microsoft.WindowsAzure.Storage.Queue.CloudQueue.AddMessage(CloudQueueMessage message, Nullable`1 timeToLive, Nullable`1 initialVisibilityDelay, QueueRequestOptions options, OperationContext operationContext) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Queue\CloudQueue.cs:line 1284    

此代码运行180秒(或更多)没有任何意义。它应该快得多。

问题:

我怀疑这个问题是因为在WindowsAzure.Storage nuget包的后端运行的HTTP超时机制。

  1. AddMessage()命令中使用的默认HTTP请求超时是多少?怎么检查?
  2. 如何将默认HTTP请求超时更改为不同的?

0 个答案:

没有答案