Antipatrón: Registra datos en servidores de terceros mediante la política de JavaScript

Estás viendo la documentación de Apigee Edge.
Ve a la Documentación de Apigee X.
información

El registro es una de las formas eficientes de depurar problemas. La información sobre la API como encabezados, parámetros de formulario, parámetros de consulta, variables dinámicas, etc., se pueden registrar referencia posterior. La información se puede registrar de forma local en los procesadores de mensajes (solo Apigee Edge para la nube privada) o a servidores externos como Sumo Logic, Splunk o Loggly.

Antipatrón

En el siguiente código, el objeto httpClient en una política de JavaScript se usa para registrar los datos en un Servidor de Sumo Logic. Esto significa que el proceso de registro en realidad se lleva a cabo el procesamiento de solicitudes y respuestas. Este enfoque es contraproducente porque aumenta el procesamiento lo que aumenta las latencias generales.

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

La culpable es la llamada a waitForComplete(), que suspende la conexión del hasta que el proceso de registro se complete. Un patrón válido es hacer que este modelo eliminando esta llamada.

Impacto

  • La ejecución del código de registro a través de la política de JavaScript aumenta la latencia de la API. para cada solicitud.
  • Las solicitudes simultáneas pueden sobrecargar los recursos en el Message Processor y, en consecuencia, que afectan negativamente el procesamiento de otras solicitudes.

Práctica recomendada

  • Usa la política de MessageLogging para transferir o registrar datos a servidores de registros o registros de terceros de administración de productos, como Sumo Logic, Splunk, Loggly, etcétera.
  • La mayor ventaja de la política de Registro de mensajes es que se puede definir en el campo Flujo del cliente, que se ejecuta después de que la respuesta se envía de vuelta a la app cliente solicitante.
  • Definir esta política en el flujo del cliente de publicaciones ayuda a separar la actividad de registro y las el procesamiento de solicitudes y respuestas, lo que evita latencias.
  • Si hay un requisito o una razón específicos para realizar registros a través de JavaScript (no el de flujo de clientes mencionada anteriormente), debe realizarse de forma asíncrona. En otras palabras, Si usas un objeto httpClient, debes asegurarte de que el código JavaScript NO implementarás waitForComplete

Lecturas adicionales