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

Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza la documentazione di Apigee Edge.

In Apigee, il comportamento predefinito prevede che i payload delle richieste e delle risposte HTTP vengano memorizzati in un buffer in memoria prima di essere elaborati dai criteri nell'API Proxy.

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.

Richiedi al processore di messaggi di applicare le norme relative alle quote al processore di messaggi per estrarre le variabili nel target.
            Destinazione al processore di messaggi JSONToXML alla risposta.
Figura 1: accesso al payload di 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 heap o errori OutOfMemory nei Message Processors a causa dell'utilizzo di buffer in memoria, in particolare se i payload di richiesta/risposta sono di grandi dimensioni

Best practice

  • Non accedere al payload della richiesta/risposta quando lo streaming è abilitato.

Per approfondire