Как изменить время ожидания по умолчанию для хранилища очередей Azure QueueClient.CreateIfNotExists()?
Я пытаюсь использовать пакет SDK для очередей Azure версии 12.
Когда я создаю свой экземпляр очереди, первое, что я делаю при запуске приложения, - это проверяю, существует ли очередь. На основе типовых примеров документации:
// Get the connection string from app settings
string connectionString = ConfigurationManager.AppSettings["storageConnectionString"];
// Instantiate a QueueClient which will be used to create and manipulate the queue
QueueClient queueClient = new QueueClient(connectionString, "myqueue");
// Create the queue
queueClient.CreateIfNotExists();
Это здорово... но... если код не может получить доступ к хранилищу очередей (например, неверная строка подключения / эмулятор хранилища localhost еще не запущен на 100% и т. Д.) ... тогда он зависает надолго... до моей Полли код срабатывает для своей "политики повтора".
Вопросы:
- Есть ли способ позволить клиенту выйти из строя / завершить работу через 5 секунд вместо того, чтобы мне пришлось ждать 30 или 60 секунд (например, это какая-то настройка по умолчанию, в глубине души).
- Клиент повторяет попытку автоматически? Если да, это означает, что мне не нужен мой код опроса...
1 ответ
Есть ли способ позволить клиенту выйти из строя / завершить работу через 5 секунд вместо того, чтобы мне пришлось ждать 30 или 60 секунд (например, это какая-то настройка по умолчанию, глубоко внутри).
Пожалуйста, попробуйте приведенный ниже код. Это немного запутанный подход к установке тайм-аута запроса в новом SDK. В коде я заставляю запрос истекать через 10 мс и инструктирую SDK не повторять запрос (options.Retry.MaxRetries = 0;
)
static void Main(string[] args)
{
HttpClient httpClient = new HttpClient()
{
Timeout = TimeSpan.FromMilliseconds(10)
};
var transport = new HttpClientTransport(httpClient);
QueueClientOptions options = new QueueClientOptions()
{
Transport = transport,
};
options.Retry.MaxRetries = 0;
var queueClient = new QueueClient(connectionString, "test", options);
queueClient.CreateIfNotExists();
Console.WriteLine("Press any key to continue.");
Console.ReadKey();
}
Клиент повторяет попытку автоматически? Если да, это означает, что мне не нужен мой код опроса...
Да, это так. Вот политика повтора по умолчанию: