digamos que temos um trecho de código
builder.Services.AddHttpClient("typicode", c =>
{
c.BaseAddress = new Uri("https://xxx");
c.DefaultRequestHeaders.Add(
"accept", "application/json");
})
.ConfigurePrimaryHttpMessageHandler(() => new SocketsHttpHandler()
{
PooledConnectionLifetime = TimeSpan.FromMinutes(5),
})
.SetHandlerLifetime(TimeSpan.FromMinutes(10));
Não entendi bem por que ele precisa chamar SetHandlerLifetime(TimeSpan.FromMinutes(10)
ou quais são os benefícios de chamá-lo. Sei que SetHandlerLifetime
controla por quanto tempo uma SocketsHttpHandler
instância (e seu pool de conexões) é reutilizada no "nível do manipulador" e PooledConnectionLifetime = TimeSpan.FromMinutes(5)
é para o "nível da conexão".
mas não é PooledConnectionLifetime = TimeSpan.FromMinutes(5)
suficiente usar isso, imagine que eu uso esse HttpClient para fazer várias solicitações para URLs diferentes, como foo1.com, foo2.com...foo10.com. Eu gostaria de um PooledConnectionIdleTimeout de 5 minutos no nível de conexão, então, por exemplo, a conexão para foo1.com expira após 5 minutos, mas foo2.com ainda está ativo e eu quero reutilizá-lo mais tarde, mas SetHandlerLifetime limpará todos os pools após 10 minutos?