Anti-pattern: accede al payload di richiesta/risposta quando è abilitato il flusso di dati

Stai visualizzando la documentazione di Apigee Edge.
Consulta la documentazione di Apigee X.
info

In Edge, il comportamento predefinito prevede che i payload delle richieste e delle risposte HTTP vengano archiviati in un buffer in memoria prima di essere elaborati dai criteri nel proxy API.

Se lo streaming è abilitato, i payload delle richieste e delle risposte 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 o se un'applicazione restituisce dati in blocchi nel tempo.

Antipattern

L'accesso al payload della richiesta/risposta con lo streaming abilitato fa sì che Edge torni alla modalità di buffering predefinita.

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. In questo modo, lo streaming in Edge verrà disattivato.

Impatto

  • Lo streaming verrà disattivato, il che può comportare un aumento della latenza nell'elaborazione dei dati.
  • A causa dell'utilizzo di buffer in memoria, è possibile osservare un aumento dell'utilizzo della memoria heap o errori OutOfMemory sui processori di messaggi soprattutto se abbiamo payload di richieste/risposte di grandi dimensioni.

Best practice

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

Per approfondire