Risolvere i timeout delle richieste API in uscita in AEM Publish
Questo articolo spiega come risolvere i problemi di timeout intermittente in Adobe Experience Manager (AEM) Publish durante il recupero di set di dati di grandi dimensioni da API esterne e fornisce strategie per evitare errori di timeout a livello di piattaforma.
Descrizione description
Ambiente
Pubblicazione Adobe Experience Manager (AEM) (tutte le versioni, incluso AEM as a Cloud Service)
Sintomi
- I timeout intermittenti si verificano quando AEM Publish recupera set di dati di grandi dimensioni (come i dati di inventario) da un’API esterna.
- L’API esterna richiede più tempo del timeout a livello di piattaforma per restituire il primo byte, con conseguente errore di ServiceUnavailable o timeout del primo byte.
- Questi timeout causano errori nel processo di recupero dei dati.
Causa
AEM Publish applica un timeout a livello di piattaforma sulle connessioni HTTP in uscita. Se la risposta di un’API esterna è lenta, le richieste sincrone provenienti da AEM Publish superano questo timeout, causando errori e un recupero dei dati non riuscito.
Risoluzione resolution
Per risolvere il problema, segui i passaggi seguenti:
-
Controlla la configurazione del client HTTP nel codice di pubblicazione di AEM:
- Imposta timeout espliciti di connessione e lettura per le richieste HTTP in uscita verso API esterne. La piattaforma applica un timeout globale (ad esempio: 10 secondi per la connessione e 60 secondi per la lettura) se il codice non specifica timeout propri.
-
Ottimizza l’integrazione per evitare chiamate sincrone con tempi di esecuzione lunghi:
-
Richieste di recupero dell’inventario in batch o impaginate in modo che ogni singola chiamata API elabori un sottoinsieme di dati più piccolo e venga completata correttamente entro la finestra di timeout della piattaforma.
-
Ad esempio, invece di richiedere tutti gli articoli di magazzino in una singola chiamata, richiedi pagine più piccole (ad esempio: 500 o 1000 elementi per chiamata) e aggrega i risultati, in base alle esigenze.
-
-
Implementa la memorizzazione nella cache o il precalcolo dei dati di inventario laddove possibile:
- Archivia i dati di inventario a cui si accede di frequente in una cache o precalcolali durante le ore di minore utilizzo per ridurre la necessità di ripetute chiamate API di grandi dimensioni.
-
Spostamento delle richieste di inventario con tempi di esecuzione lunghi all’elaborazione asincrona:
- Invece di attendere la risposta API di terze parti per la richiesta della pagina, attiva gli aggiornamenti dell’inventario in modo asincrono (ad esempio tramite processi pianificati o processi in background) e distribuisci i dati memorizzati nella cache o prerecuperati agli utenti finali.
-
Se hai bisogno di un timeout più lungo di quello consentito dalla piattaforma, riprogetta l’integrazione per evitare chiamate sincrone con tempi di esecuzione lunghi. L’aumento del timeout a livello di piattaforma non è supportato.
-
Dopo aver apportato queste modifiche, verifica che il recupero dell’inventario sia completato correttamente e che non si verifichino più errori di timeout.