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

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

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

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

Антипаттерн

Если при включенной потоковой передаче получить доступ к полезной нагрузке запроса или ответа, Edge вернется к режиму буферизации по умолчанию.

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

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

Результат

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

Совет

  • Не получайте доступ к полезной нагрузке запроса/ответа, когда включена потоковая передача.

Дополнительные материалы