Stai visualizzando la documentazione di Apigee Edge.
Consulta la
documentazione di Apigee X. info
La registrazione è uno dei modi efficienti per eseguire il debug dei problemi. Le informazioni sulla richiesta API, come intestazioni, parametri del modulo, parametri di query, variabili dinamiche e così via, possono essere registrate per riferimento futuro. Le informazioni possono essere registrate localmente sui Message Processor (solo Apigee Edge per il cloud privato) o su server di terze parti come Sumo Logic, Splunk o Loggly.
Antipattern
Nel codice riportato di seguito, l'oggetto httpClient in una policy JavaScript viene utilizzato per registrare i dati su un
server Sumo Logic. Ciò significa che il processo di registrazione avviene durante l'elaborazione della richiesta/risposta. Questo approccio è controproducente perché aumenta il tempo di elaborazione, aumentando così le latenze complessive.
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();
Il problema è la chiamata a waitForComplete(), che sospende le operazioni del chiamante finché il processo di registrazione non è completato. Un pattern valido consiste nel rendere asincrono questo processo eliminando questa chiamata.
Impatto
- L'esecuzione del codice di registrazione tramite la policy JavaScript aumenta la latenza della richiesta API.
- Le richieste simultanee possono stressare le risorse del processore di messaggi e, di conseguenza, influire negativamente sull'elaborazione di altre richieste.
Best practice
- Utilizza la policy MessageLogging per trasferire/registrare i dati sui server di log o sui servizi di gestione dei log di terze parti come Sumo Logic, Splunk, Loggly e così via.
- Il vantaggio principale della policy di registrazione dei messaggi è che può essere definita nel flusso Post Client, che viene eseguito dopo che la risposta è stata inviata all'app client richiedente.
- La definizione di questa policy nel flusso Post Client consente di separare l'attività di registrazione e l' elaborazione della richiesta/risposta, evitando così le latenze.
- Se esiste un requisito o un motivo specifico per eseguire la registrazione tramite JavaScript (non l'opzione del flusso Post
Client menzionata sopra), è necessario eseguirla in modo asincrono. In altre parole,
se utilizzi un oggetto
httpClient, devi assicurarti che JavaScript NON implementiwaitForComplete.