Тайм-аут хранилища Azure CloudQueue.AddMessage () - PullRequest
0 голосов
/ 28 мая 2018

Фон

У меня есть очередь хранилища Azure для передачи сообщений между различными микро-службами.Установил пакет WindowsAzure.Storage (версия 9.2.0) из Nuget.

Вот как выполняется добавление нового сообщения в очередь:

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 секунд (или более).).Это должно быть намного быстрее.

Вопросы:

Я подозреваю, что эта проблема из-за механизма тайм-аута HTTP, работающего в серверной части пакета WindowsAzure.Storage nuget.

  1. Какое время ожидания HTTP-запроса по умолчанию используется в команде AddMessage()?Как проверить?
  2. Как изменить время ожидания HTTP-запроса по умолчанию на другое?
...