Антишаблон: доступ к полезной нагрузке запроса/ответа при включенной потоковой передаче.

Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee
X.info

В Edge по умолчанию данные HTTP-запросов и ответов сохраняются в буфере в оперативной памяти, прежде чем они будут обработаны политиками API-прокси.

Если потоковая передача включена, то данные запроса и ответа передаются без изменений в клиентское приложение (для ответов) и целевую конечную точку (для запросов). Потоковая передача особенно полезна, если приложение принимает или возвращает большие объемы данных, или если приложение возвращает данные порциями в течение определенного времени.

Антипаттерн

При попытке доступа к содержимому запроса/ответа с включенной потоковой передачей Edge возвращается к режиму буферизации по умолчанию.

Рисунок 1 : Доступ к содержимому запроса/ответа при включенной потоковой передаче.

На приведенной выше иллюстрации показано, что мы пытаемся извлечь переменные из полезной нагрузки запроса и преобразовать полезную нагрузку JSON-ответа в XML с помощью политики JSONToXML. Это отключит потоковую передачу в Edge.

Влияние

  • Потоковая передача будет отключена, что может привести к увеличению задержек при обработке данных.
  • Увеличение использования памяти в куче или ошибки OutOfMemory могут наблюдаться в обработчиках сообщений из-за использования буферов в оперативной памяти, особенно при больших объемах запросов/ответов.

Передовая практика

  • Не следует обращаться к содержимому запроса/ответа, если включена потоковая передача.

Дополнительная информация