TECNOLOGIA - WebServices - O que é um Timeout/Timed Out no processo de integração via WebService
Dúvida
O que é um Timeout/Timed Out no processo de integração via WebService?
Solução
Timeout (ou Timed Out) indica basicamente o término do tempo de espera definido para execução de algum processo.
Esse conceito é importante no processo de integração via WebServices, pois o sistema integrado que efetuou a chamada do WebService não pode ficar esperando eternamente por uma resposta da chamada do WebService. Portanto, o sistema que efetuou a chamada do WebService, ao realizar esta chamada, determina internamente o tempo que ele ficará esperando a resposta para essa chamada. Esse tempo especificado é o o tempo de timeout.
Para exemplificação prática deste conceito, verifique o cenário abaixo:
1. Exemplificação de cenário
1.1. Você possui um sistema que faz a chamada de um WebService do sistema Gestão Empresarial | ERP;
1.2. No seu sistema, você define o tempo de timeout para esse processo de 60 segundos;
1.3. O seu sistema faz o acionamento do WebService do Gestão Empresarial | ERP solicitando a exportação de 1.000 cadastros de fornecedores;
1.4. O processamento da requisição deste WebService ocorre conforme descrito no artigo TECNOLOGIA - WebServices - Como funciona o processamento de um WebService pelos sistemas de Tecnologia G5/G6;
1.5. Pela quantidade de registros que o seu sistema solicitou, o Gestão Empresarial | ERP demora 80 segundos para efetuar o processamento (tempo que pode ser verificado fazendo a Consulta da Requisição, conforme descrito o artigo ERP - WebServices - Como efetuar a Consulta de Requisições de WebServices);
1.6. No entanto, quando o seu sistema tiver esperado 60 segundos para o processamento e não tiver recebido o retorno do processamento do WebService, o seu sistema encerrará a conexão, gerando uma timeout na conexão;
1.7. O Gestão Empresarial | ERP continuará efetuando o processamento da requisição mesmo após os 60 segundos se passarem, porém, o retorno enviado pelo Gestão Empresarial | ERP para o Servidor Web (para posteriormente ser retornado ao seu sistema) não terá serventia, pois o seu sistema já quebrou a comunicação e não está mais aguardando um retorno.
Tendo em vista a explicação do cenário reportado acima, você pode verificar a importância da configuração adequada entre o tempo de timeout que o sistema utilizará para cada chamada dos WebServices e a quantidade de registros que será processada em cada chamada (quanto maior a quantidade de registros, maior o tempo de timeout). No entanto, é importante também validar a quebra da quantidade de registros trafegados a cada chamada do WebService, evitando assim que alguma oscilação na comunicação entre os sistema (exemplo: queda na internet) impeça o término do processamento da requisição com sucesso.
Importante
- Apesar do principal determinante do tempo de timeout ser o sistema integrado que efetua a chamada do WebService ao sistema da Senior, os sistemas da Senior e o Wildfly possuem parametrização para determinar um tempo de Timeout de execução de requisições;
- As parametrizações indicadas abaixo devem levar em consideração o processo mais longo que o Cliente tem em execução em sua base de dados, no que tange integração com WebServices. Isso irá garantir que esse processo não seja afetado por conta de algum timeout não previsto durante o processamento;
- Em ambientes Cloud Senior, a parametrização dentro do SeniorCofigCenter e do Wildfly é uma responsabilidade de IT Services, no entanto, em momento de Implantação de Rotinas, é necessário que o Consultor de Implantação do sistema atue em conjunto com IT Services para definir a parametrização de acordo com a realidade de cada Cliente.
Verifique abaixo as configurações disponíveis nos componentes do sistema que podem gerar timeout de comunicação.
2. SeniorConfigCenter
2.1. Acesse o SeniorConfigCenter;
2.1.1. Acesse a opção Middleware / Web service e verifique o valor definido no parâmetro 'Tempo máximo de espera por resposta ao consumo um web service':
Este parâmetro define um tempo de timeout do processamento de qualquer WebService.
Esse tempo é respeitado pelas instâncias que fazem processamentos de WebServices e, caso uma instância esteja executando uma requisição a mais tempo que o tempo determinado neste parâmetro, o processamento será interrompido (isso serve para garantir que uma instância não fique processamento uma requisição eternamente, podendo causar um travamento geral do Middleware Senior). Para maiores informações sobre o parâmetro, verifique as informações do mesmo no Manual da Tecnologia.
Importante
A alteração do parâmetro exige a reinicialização do Middleware Senior.
3. Wildfly
3.1. Acesse o Console do WildFly. Exemplo: http://localhost:9990/
3.1.1. Acesse a opção Configuration / Profile: <profile> / Subsystem: Web (Undertow) / Setting: Server / Server: default-server. Clique em 'View' na última opção, conforme exemplo abaixo:
Importante
Você deve selecionar o Profile adequado conforme as configurações do seu Wildfly.
3.1.2. Na tela que será aberta, selecione a opção Listner / HTTP Listner ou HTTP Listner, conforme exemplo abaixo:
Importante
Caso você esteja utilizando HTTPS para atender requisições no Wilfly, você necessita efetuar as configurações no Listner HTTPS.
3.1.3. Selecione a configuração existente (que possivelmente será 'default') e acione a opção 'Edit', conforme imagem abaixo:
3.1.4. Verifique a parametrização dos valores para os parâmetros indicados abaixo:
- Read Timeout: Tempo máximo (em milissegundos) que o servidor aguardará por dados após estabelecer a conexão;
- Write Timeout: Tempo máximo (em milissegundos) que o servidor aguardará para enviar dados ao cliente;
- No Request timeout: Tempo máximo (em milissegundos) que o servidor aguardará por uma nova requisição em uma conexão persistente antes de fechá-la.
Ajuste esses parâmetros conforme a necessidade.
3.1.5. Clique no botão 'Save' ao final da tela para salvar as alterações;
3.1.6. Reinicie o Domínio do Wildfly para aplicar as configurações.
Para mais informações sobre os WebServices do Gestão Empresarial | ERP, consulte o artigo ERP - WebServices - Onde é possível encontrar informações diversas sobre processo de integração via WebServices (índice).