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

Você está vendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
informações

A geração de registros é uma das maneiras eficientes de depurar problemas. As informações sobre a solicitação de 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 (somente Apigee Edge para nuvem privada) ou em 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 um servidor da Sumo Logic. Isso significa que o processo de geração de registros realmente ocorre durante o processamento de solicitação/resposta. Essa abordagem é contraprodutiva porque aumenta o tempo de processamento, 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 aqui é a chamada para waitForComplete(), que suspende as operações do autor da chamada até que o processo de geração de registros seja concluído. Um padrão válido é tornar o comportamento assíncrono, eliminando a chamada.

Impacto

  • Executar o código de geração de registros pela política JavaScript aumenta a latência da solicitação de API.
  • 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 registros ou serviços de gerenciamento de registros de terceiros, como Sumo Logic, Splunk, Loggly etc.
  • A maior vantagem da política de geração de registros de mensagens é que ela pode ser definida no fluxo de cliente post, que é executado depois que a resposta é enviada de volta ao app cliente solicitante.
  • Definir essa política no fluxo de pós-clientes ajuda a separar a atividade de geração de registros e o processamento de solicitação/resposta, evitando latências.
  • Se houver um requisito específico ou um motivo para fazer a geração de registros via JavaScript, e não a opção de fluxo de cliente de postagem mencionada acima, será preciso fazer isso de maneira assíncrona. Em outras palavras, se você estiver usando um objeto httpClient, será necessário garantir que o JavaScript NÃO implemente waitForComplete.

Leia mais