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 archiviati in un buffer in memoria prima di essere elaborati dai criteri nel proxy API.

Se lo streaming è abilitato, i payload di richieste e 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 oppure se un'applicazione restituisce 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.

Richiesta di quota del processore di messaggi per estrarre le variabili dal processore di messaggi alla destinazione.
            Target to Message Processor JSONToXML to Response.
Figura 1: Accesso al payload di richiesta/risposta con lo streaming abilitato

L'illustrazione precedente 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 Apigee verrà disattivato.

Impatto

  • Lo streaming verrà disattivato, il che può comportare un aumento della latenza nell'elaborazione dei dati
  • L'aumento dell'utilizzo della memoria heap o degli errori OutOfMemory può essere osservato sui processori di messaggi a causa dell'utilizzo 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