Antipattern: accesso al payload della richiesta/risposta quando lo streaming è abilitato

Stai visualizzando la documentazione di Apigee e Apigee hybrid.
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 lo streaming è abilitato, i payload di richiesta e risposta vengono trasmessi in streaming senza modifiche all'app client (per le risposte) e all'endpoint di destinazione (per le richieste). Lo streaming è utile soprattutto se un'applicazione accetta o restituisce payload di grandi dimensioni oppure se esiste un'applicazione che restituisce i dati in blocchi nel tempo.

Antipattern

L'accesso al payload di richiesta/risposta con lo streaming 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 della richiesta/risposta con lo streaming abilitato

L'illustrazione sopra mostra che stiamo tentando di estrarre le variabili dal payload della richiesta e di convertire il payload della risposta JSON in XML utilizzando il criterio JSONToXML. Lo streaming verrà disattivato in Apigee.

Impatto

  • Lo streaming verrà disattivato, il che può comportare un aumento delle 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 della richiesta/risposta quando lo streaming è abilitato.

Per approfondire