Antipattern: aceder ao payload do pedido/resposta quando o streaming está ativado

Está a ver a documentação do Apigee e do Apigee Hybrid.
Ver documentação do Apigee Edge.

No Apigee, o comportamento predefinido é que as cargas úteis de pedidos e respostas HTTP são armazenadas num buffer na memória antes de serem processadas pelas políticas no proxy de API.

Se o streaming estiver ativado, os payloads de pedidos e respostas são transmitidos sem modificação para a app cliente (para respostas) e o ponto final de destino (para pedidos). O streaming é útil, especialmente se uma aplicação aceitar ou devolver grandes payloads, ou se existir uma aplicação que devolva dados em blocos ao longo do tempo.

Antipattern

O acesso ao payload de pedido/resposta com o streaming ativado faz com que o Apigee volte ao modo de bufferização predefinido.

Pedido de política de quota do processador de mensagens para extrair variáveis do processador de mensagens para segmentar.
            Alvo para Message Processor JSONToXML para Response.
Figura 1: aceder à carga útil do pedido/resposta com o streaming ativado

A ilustração acima mostra que estamos a tentar extrair variáveis do payload do pedido e a converter o payload da resposta JSON em XML através da política JSONToXML. Esta ação desativa o streaming no Apigee.

Impacto

  • A transmissão em fluxo é desativada, o que pode levar a um aumento das latências no tratamento dos dados
  • É possível observar um aumento na utilização da memória de heap ou erros OutOfMemory nos processadores de mensagens devido à utilização de buffers na memória, especialmente se tivermos payloads de pedidos/respostas grandes

Prática recomendada

  • Não aceda à carga útil do pedido/resposta quando o streaming estiver ativado.

Leitura complementar