Tempo limite para um proxy Apache HttpClient 5 que fica preso durante o CONNECT
Defina o tempo limite de socket I/O do gerenciador de conexões para a configuração do túnel, junto com o tempo limite de conexão TCP separado.
O proxy aceitou TCP mas nunca concluiu a resposta CONNECT. A resposta do site ainda não começou; um tempo limite voltado apenas para essa resposta posterior pode deixar esta configuração esperando sem limite.
Para o Apache HttpClient 5.3.1, defina os padrões do gerenciador de conexões:
var connection = ConnectionConfig.custom()
.setConnectTimeout(Timeout.ofSeconds(5))
.setSocketTimeout(Timeout.ofSeconds(10))
.build();
var manager = PoolingHttpClientConnectionManagerBuilder.create()
.setDefaultConnectionConfig(connection)
.build();
var client = HttpClients.custom()
.setConnectionManager(manager)
.setProxy(new HttpHost("http", "proxy.example", 8080))
.build();Use as classes do Apache HttpComponents 5 em org.apache.hc, com Timeout no pacote utilitário core5. Mantenha o cliente para o seu trabalho e feche-o. Para um teste HTTP público isolado, um candidato da lista de proxies HTTP fornece o endpoint; mantenha o destino estável ao comparar tempos limite.
| Limite | Espera abordada |
|---|---|
| Tempo limite de conexão | Estabelecimento da conexão |
| Tempo limite de socket | Inatividade de I/O padrão, incluindo a troca CONNECT |
| Aquisição no pool / resposta da aplicação | Outras etapas configuradas separadamente |
Após o CONNECT, o TLS pode precisar do seu próprio limite de configuração por meio da configuração TLS do HttpClient 5. Distinga também inatividade de um prazo total: bytes intermitentes ou trocas de autenticação repetidas podem ampliar o tempo total. Use a política de prazo ou cancelamento suportada pela aplicação para um orçamento para toda a operação.