Antipattern: rejestrowanie danych na serwerach innych firm przy użyciu zasady JavaScript

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

Logowanie to jeden z efektywnych sposobów debugowania problemów. Informacje o żądaniu do interfejsu API, takie jak nagłówki, parametry formularza, parametry zapytania, zmienne dynamiczne itp., można rejestrować w celu późniejszego wglądu. Te informacje mogą być logowane lokalnie przez procesory wiadomości (tylko Apigee Edge dla Private Cloud) lub serwery innych firm, takie jak Sumo Logic, Splunk lub Loggly.

Antywzór

W poniższym kodzie obiekt httpClient w zasadzie JavaScript służy do logowania danych na serwerze Sumo Logic. Oznacza to, że proces logowania odbywa się podczas przetwarzania żądań i odpowiedzi. Takie podejście ma skutek odwrotny do zamierzonego, ponieważ wydłuża czas przetwarzania i zwiększa ogólne opóźnienia.

LogData_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>

LogData.js:

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

Wiedzą tu jest wywołanie metody waitForComplete(), które zawiesza operacje elementu wywołującego do czasu zakończenia procesu logowania. Prawidłowy wzór musi być asynchroniczny, eliminując to wywołanie.

Wpływ

  • Wykonanie kodu logowania za pomocą zasady JavaScriptu zwiększa opóźnienie żądania do interfejsu API.
  • Jednoczesne żądania mogą obciążać zasoby procesora wiadomości, w związku z czym niekorzystnie wpływają na przetwarzanie innych żądań.

Sprawdzona metoda

  • Użyj zasady MessageLogging, aby przenieść/logować dane do serwerów logów lub usług zarządzania logami innych firm, takich jak Sumo Logic, Splunk, Loggly itp.
  • Największą zaletą zasady logowania wiadomości jest to, że można ją zdefiniować w procesie tworzenia klienta poczty, który jest wykonywany po wysłaniu odpowiedzi z powrotem do żądającej aplikacji klienckiej.
  • Zdefiniowanie tej zasady w procesie tworzenia konta klienta pomaga oddzielić aktywność związaną z logowaniem od przetwarzania żądań i odpowiedzi, co pozwala uniknąć opóźnień.
  • Jeśli jest określony wymóg lub powód do logowania za pomocą JavaScriptu (a nie w przypadku wspomnianej powyżej opcji przepływu po klienta), musisz to zrobić asynchronicznie. Inaczej mówiąc, jeśli używasz obiektu httpClient, musisz upewnić się, że JavaScript NIE implementuje waitForComplete

Więcej informacji