Antipattern: accedere al payload di richiesta/risposta quando è abilitato il flusso di dati

Stai visualizzando la documentazione relativa a Apigee e Apigee ibrido.
Visualizza Documentazione di Apigee Edge.

In Apigee, il comportamento predefinito è che i payload di richiesta e risposta HTTP siano archiviati in nel buffer in memoria prima che vengano elaborati dai criteri nel proxy API.

Se è abilitato il flusso di dati, i payload di richiesta e risposta vengono trasmessi senza modifiche l'app client (per le risposte) e l'endpoint di destinazione (per le richieste). Lo streaming è utile soprattutto se un'applicazione accetta o restituisce payload di grandi dimensioni o se c'è un'applicazione che restituisce i dati in blocchi nel tempo.

Antipattern

L'accesso al payload di richiesta/risposta con la modalità flusso abilitato fa sì che Apigee torni alla modalità di buffering predefinita.

Criterio della quota del processore di messaggi per estrarre le variabili nella destinazione.
            Destinazione del processore di messaggi JSONToXML per la risposta.
Figura 1: accesso al payload richiesta/risposta con streaming abilitato

L'illustrazione sopra mostra che stiamo cercando di estrarre variabili dal payload della richiesta e convertendo il payload della risposta JSON in XML utilizzando il criterio JSONToXML. Questa operazione disattiverà lo streaming di Apigee.

Impatto

  • Il flusso di dati verrà disabilitato, il che può portare a maggiori latenze nell'elaborazione dei dati
  • È possibile osservare un aumento dell'utilizzo della memoria dell'heap o un errore di OutOfMemory nei processori di messaggi dovuto all’uso di buffer in memoria, soprattutto se abbiamo payload di richiesta/risposta di grandi dimensioni

Best practice

  • Non accedere al payload di richiesta/risposta quando è abilitato il flusso di dati.

Per approfondire