Resolver tempos limite de solicitação de API de saída em Publicação do AEM
Este artigo explica como resolver problemas intermitentes de tempo limite no Adobe Experience Manager (AEM) Publish ao recuperar grandes conjuntos de dados de APIs externas e fornece estratégias para evitar erros de tempo limite no nível da plataforma.
Descrição description
Ambiente
Publicação do Adobe Experience Manager (AEM) (todas as versões, incluindo o AEM as a Cloud Service)
Sintomas
- Os tempos limite intermitentes ocorrem quando o AEM Publish recupera grandes conjuntos de dados (como dados de inventário) de uma API externa.
- A API externa demora mais do que o tempo limite no nível da plataforma para retornar o primeiro byte, resultando em ServiceUnavailable ou erros de tempo limite do primeiro byte.
- Esses tempos limite causam falhas no processo de recuperação de dados.
Causa
O AEM Publish impõe um tempo limite em nível de plataforma em conexões HTTP de saída. Se uma API externa demorar para responder, as solicitações síncronas da Publicação do AEM excederão esse tempo limite, resultando em erros e falha na recuperação de dados.
Resolução resolution
Siga as etapas abaixo para resolver o problema:
-
Revise a configuração do cliente HTTP no código de publicação do AEM:
- Defina tempo limite de conexão e leitura explícitos para solicitações HTTP de saída em APIs externas. A plataforma impõe um tempo limite global (Por exemplo: 10 segundos para conexão e 60 segundos para leitura) se o código não especificar seus próprios tempos limite.
-
Otimize sua integração para evitar chamadas síncronas de longa duração:
-
Solicitações de recuperação de inventário em lote ou paginado para que cada chamada de API individual processe um subconjunto menor de dados e seja bem concluída dentro da janela de tempo limite da plataforma.
-
Por exemplo, em vez de solicitar todos os itens de inventário em uma única chamada, solicite páginas menores (por exemplo: 500 ou 1000 itens por chamada) e agregue os resultados, conforme necessário.
-
-
Implementar o armazenamento em cache ou pré-calcular dados de inventário, quando possível:
- Armazene dados de inventário acessados com frequência em um cache ou pré-calcule-os fora do horário de pico para reduzir a necessidade de chamadas repetidas de API grandes.
-
Mover extrações de estoque de longa duração para processamento assíncrono:
- Em vez de fazer a solicitação de página aguardar a resposta da API de terceiros, acione as atualizações de inventário de forma assíncrona (por exemplo: por meio de trabalhos agendados ou trabalhadores em segundo plano) e envie dados em cache ou pré-buscados para os usuários finais.
-
Se você precisar de um tempo limite mais longo do que o permitido pela plataforma, recrie a integração para evitar chamadas síncronas de longa duração. Não há suporte para aumentar o tempo limite no nível da plataforma.
-
Depois de fazer essas alterações, verifique se a recuperação do inventário é concluída com êxito e se os erros de tempo limite não ocorrem mais.