Время отклика HttpClientFactory увеличивается
Я только что добавил новый рекомендуемый способ использования HttpClients, который заключается в использовании HttpClientFactory, интегрированной с Polly.
Вот мой DI
services.AddHttpClient("ThirdParty", client =>
{
//commented out for the purpose of this question
//client.Timeout =
// TimeSpan.FromSeconds(configProvider.OverallTimeout);
});
Вот код поставщика услуг
using (var client = _clientFactory.CreateClient("ThirdParty"))
{
....
//write log for start time
var response = await client.PostAsync(url, content);
//write log for end time
....
}
Теперь приведенный выше код поставщика услуг находится в классе, который вызывается несколько раз, скажем, 6 раз для каждого запроса, поступающего в службу.
Пример теста, который я выполнил, состоит в том, чтобы запустить запрос к службе, которая, в свою очередь, вызывает класс поставщика услуг 6 раз, чтобы запустить 6 отдельных запросов для третьей стороны для получения ответов.
Я также настроил стороннее устройство на 5-секундную задержку, поэтому я ожидаю, что все 6 запросов будут запущены одновременно, и все ответы будут возвращены через 5 секунд, поскольку фабрика клиентов предположительно создает клиентов http скоротечно
Однако я обнаружил, что запросы, по-видимому, объединяются во время отклика, т.е. первые два занимают 5 секунд, вторые два - 10, а последние два - 15, хотя на самом деле все они запускаются при точно в то же время
Если я изменю код на
используя (var client = _clientFactory.CreateClient("randomString"))...... (поэтому он не ссылается на пользовательскую конфигурацию "ThirdParty" в DI, (хотя сама она еще ничего не делает))
все работает нормально и все ответы возвращаются через 5 секунд.
Также, если я изменю код, чтобы он был тем, что я имел раньше
используя (var client = new HttpClient())...
это также работает как ожидалось, и все ответы возвращаются через 5 секунд
Так что, похоже, это как-то связано с пользовательской настройкой DI.
Есть идеи?
Я также попытался использовать TypedClients вместо вышеуказанного метода NamedClients, и я получаю те же результаты
ОБНОВИТЬ
Эта проблема возникает только при размещении в приложении Service Fabric