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:

  1. 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.
  2. 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.

  3. 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.
  4. 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.
  5. 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.

  6. Dopo aver apportato queste modifiche, verifica che il recupero dell’inventario sia completato correttamente e che non si verifichino più errori di timeout.

recommendation-more-help
experience-cloud-kcs-help-kbarticles