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

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Logowanie to jeden z wydajnych sposobów debugowania problemów. informacje o interfejsie API, takich jak nagłówki, parametry formularza, parametry zapytań, zmienne dynamiczne itd., później. Informacje mogą być logowane lokalnie w procesorach wiadomości (tylko Apigee Edge w przypadku chmury prywatnej) lub na serwery innych firm, takie jak Sumo Logic, Splunk czy Loggly.

Antywzór

W poniższym kodzie obiekt httpClient w zasadach JavaScript służy do rejestrowania danych w Serwer Sumo Logic. Oznacza to, że proces rejestrowania danych odbywa się przetwarzania żądań/odpowiedzi. Takie podejście jest odwrotne do zamierzone, ponieważ zwiększa co prowadzi do wydłużenia czasu oczekiwania.

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();

Problemem jest połączenie z numerem waitForComplete(), które zawiesza do zakończenia procesu logowania. Prawidłowym wzorcem jest ustawienie wartości asynchronicznego eliminując to wywołanie.

Wpływ

  • Wykonywanie kodu logowania zgodnie z zasadami JavaScriptu skraca czas oczekiwania interfejsu API użytkownika.
  • Równoczesne żądania mogą obciążać zasoby procesora wiadomości, przez co niekorzystnie wpływa na przetwarzanie innych żądań.

Sprawdzona metoda

  • Użyj zasady MessageLogging, aby przenieść/zapisać dane do serwerów logów lub dziennika innej firmy. usług zarządzania, takich jak Sumo Logic, Splunk, Loggly itp.
  • Największą zaletą zasad rejestrowania wiadomości jest to, że można je zdefiniować w narzędziu Post Przepływ klienta, który jest wykonywany po wysłaniu odpowiedzi do aplikacji klienckiej, która wysłała żądanie.
  • Zdefiniowanie tej zasady w przepływie klienta Post Client pomaga oddzielić aktywność rejestrowania od przetwarzania żądań/odpowiedzi, co pozwala uniknąć opóźnień.
  • Jeśli istnieją szczególne wymagania lub powód, dla których loguj się za pomocą JavaScriptu (a nie za pomocą wspomnianej powyżej opcji przepływu klienta), trzeba to zrobić asynchronicznie. Innymi słowy, jeśli używasz obiektu httpClient, musisz upewnić się, że JavaScript NIE wdrażaj waitForComplete

Więcej informacji