Время отклика 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

0 ответов

Другие вопросы по тегам