3

Каков правильный шаблон кода звонка/кода для записи в хранилище очередей Azure по-своему?Лазерная память хранения очередей в 2015 году?

Прямо сейчас, псевдо-код

Создать статический класс с StorageCredentials и расходной Недвижимостью Болгарией Недвижимости облачного хранилища данных. При запуске приложения считывайте значения из файла конфигурации в свойства {get;} - only.

Создать класс с помощью метода async Task с параметром ввода моего типа сообщения приложения. Метод сериализует тип, создает новый CloudQueueMessage, новый CloudQueueClient, новую ссылку CloudQueue. Если требуется информация о конфигурации, она считывается из статического класса. Мой код затем:

await Task.Run(()=> theref.AddMessage(themessage). 

Она смотрит на меня, как будто у меня есть некоторая избыточность в коде, и я не уверен, если/как соединения могут быть объединены в очередь, а также если требуется повторить логику, я бы с подключением базы данных (SQL Server и т. д.).

Я пытаюсь понять, какие шаги доступа к очереди могут быть уменьшены или оптимизированы каким-либо образом.

Все идеи оценены.

Использование .NET 4.5.2, C#. Код выполняется в облачной службе (роль рабочего).

Спасибо.

ответ

2

Я бы уложил вашу ссылку CloudQueue и повторно использовал ее. Каждый раз, когда вы добавляете сообщение в очередь, этот класс создает вызов REST с использованием HttpClient. Поскольку ваши учетные данные и память/очередь Uri уже известны, это может сэкономить несколько циклов.

Также рекомендуется использовать AddMessageAsync вместо AddMessage.

В качестве ссылки вы можете увидеть реализацию в библиотеках клиентов хранилища here.

5
  • Клиентская библиотека Azure Storage уже по умолчанию запускается для вас в случае служебных/сетевых ошибок. Он будет повторять попытку до 3 раз за операцию.
  • Вы можете изменить свой звонок на await theref.AddMessageAsync(themessage) вместо блокировки синхронного вызова AddMessage в отдельной теме.
  • Начиная с последней библиотеки вы можете повторно использовать объект CloudQueueClient, чтобы получить новую ссылку на CloudQueue.
  • Если вы звоните AddMessageAsync последовательно, то такое же соединение будет использоваться по возможности. Если вы вызываете его одновременно, будет создано больше соединений, до ServicePointManager.DefaultConnectionLimit соединений. Итак, если вы хотите одновременный доступ к очереди, вы можете увеличить это число.
  • Отказ от алгоритма Nagle через ServicePointManager.UseNagleAlgorithm также рекомендуется с учетом размера сообщений в очереди.