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

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

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

Se è abilitato il flusso di dati, i payload di richiesta e risposta vengono trasmessi in flusso senza modifiche all'app client (per le risposte) e all'endpoint di destinazione (per le richieste). I flussi di dati sono utili soprattutto se un'applicazione accetta o restituisce payload di grandi dimensioni o se è presente un'applicazione che restituisce i dati in blocchi nel tempo.

Antipattern

L'accesso al payload di richiesta/risposta con la trasmissione di flussi di dati abilitata 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 di richiesta/risposta con streaming abilitato

L'illustrazione sopra mostra che stiamo cercando di estrarre variabili dal payload della richiesta e di convertire il payload della risposta JSON in XML utilizzando il criterio JSONToXML. Questa operazione disabiliterà il flusso in 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 degli errori 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