Антипаттерн: запись данных на сторонние серверы с использованием политики JavaScript.

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

Ведение журнала — один из эффективных способов отладки проблем. Информация о запросе API, такая как заголовки, параметры формы, параметры запроса, динамические переменные и т. д., может быть записана для дальнейшего использования. Информация может регистрироваться локально на процессорах сообщений (только Apigee Edge для частного облака) или на сторонних серверах, таких как Sumo Logic, Splunk или Loggly.

Антипаттерн

В приведенном ниже коде объект httpClient в политике JavaScript используется для регистрации данных на сервере Sumo Logic. Это означает, что процесс логирования фактически происходит во время обработки запроса/ответа. Этот подход контрпродуктивен, поскольку увеличивает время обработки, тем самым увеличивая общие задержки.

ЛогДанные_JS:

<!-- /antipatterns/examples/1-4.xml -->
<Javascript async="false" continueOnError="false" enabled="true" timelimit="2000" name="LogData_JS">
  <DisplayName>LogData_JS</DisplayName>
  <ResourceURL>jsc://LogData.js</ResourceURL>
</Javascript>

ЛогДанные.js:

<!-- /antipatterns/examples/1-5.xml -->
var sumoLogicURL = "...";
httpClient.send(sumoLogicURL);
waitForComplete();

Виновником здесь является вызов waitForComplete() , который приостанавливает операции вызывающей стороны до завершения процесса регистрации. Допустимый шаблон — сделать это асинхронным, исключив этот вызов.

Влияние

  • Выполнение кода регистрации с помощью политики JavaScript увеличивает задержку запроса API.
  • Одновременные запросы могут перегружать ресурсы процессора сообщений и, следовательно, отрицательно влиять на обработку других запросов.

Лучшая практика

  • Используйте политику MessageLogging для передачи/регистрации данных на серверы журналов или сторонние службы управления журналами, такие как Sumo Logic, Splunk, Loggly и т. д.
  • Самым большим преимуществом политики ведения журнала сообщений является то, что ее можно определить в потоке почтового клиента, который выполняется после отправки ответа обратно запрашивающему клиентскому приложению.
  • Определение этой политики в потоке Post Client помогает разделить активность регистрации и обработку запросов/ответов, тем самым избегая задержек.
  • Если есть конкретное требование или причина вести журналирование через JavaScript (а не упомянутый выше вариант потока Post Client), то это необходимо делать асинхронно. Другими словами, если вы используете объект httpClient , вам необходимо убедиться, что JavaScript НЕ реализует waitForComplete

Дальнейшее чтение