Antipadrão: registrar dados em servidores de terceiros usando a política de JavaScript

Esta é a documentação do Apigee Edge.
Acesse Documentação da Apigee X.
informações

A geração de registros é uma das maneiras eficientes de depurar problemas. As informações sobre a API como cabeçalhos, parâmetros de formulário, parâmetros de consulta, variáveis dinâmicas etc. podem ser registradas para referência posterior. As informações podem ser registradas localmente nos processadores de mensagens (apenas no Apigee Edge para nuvem privada) ou para servidores de terceiros, como Sumo Logic, Splunk ou Loggly.

Antipadrão

No código abaixo, o objeto httpClient em uma política JavaScript é usado para registrar os dados em uma servidor Sumo Logic. Isso significa que o processo de geração de registros ocorre ao processamento de solicitações/respostas. Essa abordagem é contraprodutiva, porque aumenta o processamento tempo, aumentando assim as latências gerais.

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

O culpado é a chamada para waitForComplete(), que suspende o operações até que o processo de geração de registros seja concluído. Um padrão válido é tornar esse modelo assíncrono ao eliminar essa chamada.

Impacto

  • Executar o código de geração de registros usando a política JavaScript aumenta a latência da API solicitação.
  • Solicitações simultâneas podem estressar os recursos no processador de mensagens e, consequentemente, afetar negativamente o processamento de outras solicitações.

Prática recomendada

  • Use a política MessageLogging para transferir/registrar dados para servidores de registro ou registros de terceiros de gerenciamento de projetos, como Sumo Logic, Splunk, Loggly etc.
  • A maior vantagem da política de registro de mensagens é que ela pode ser definida no arquivo Fluxo do cliente, que é executado depois que a resposta é enviada de volta ao aplicativo cliente solicitante.
  • A definição dessa política no fluxo pós-cliente ajuda a separar a atividade de geração de registros processamento de solicitação/resposta, evitando latências.
  • Se houver um requisito específico ou um motivo para gerar registros via JavaScript (e não o opção de fluxo do cliente mencionada acima), ela precisa ser feita de forma assíncrona. Em outras palavras, Se você estiver usando um objeto httpClient, será necessário verificar se o JavaScript NÃO implementar waitForComplete

Leitura adicional