in sample-apps/springboot/src/main/java/com/amazon/sampleapp/DemoApplicationInterceptor.java [28:58]
public void postHandle(
HttpServletRequest request,
HttpServletResponse response,
Object handler,
ModelAndView modelAndView) {
// only emit metric data for /outgoing-http-call path
if (request.getServletPath().equals("/outgoing-http-call")) {
try {
MetricEmitter metricEmitter = buildMetricEmitter();
String statusCode = String.valueOf(response.getStatus());
// calculate return time
Long requestStartTime = (Long) request.getAttribute(REQUEST_START_TIME);
metricEmitter.emitReturnTimeMetric(
System.currentTimeMillis() - requestStartTime, request.getServletPath(), statusCode);
// emit http request load size
int loadSize = request.getContentLength() + mimicPayloadSize();
metricEmitter.emitBytesSentMetric(loadSize, request.getServletPath(), statusCode);
metricEmitter.updateTotalBytesSentMetric(loadSize, request.getServletPath(), statusCode);
// mimic a queue size reporter
int queueSizeChange = mimicQueueSizeChange();
metricEmitter.emitQueueSizeChangeMetric(
queueSizeChange, request.getServletPath(), statusCode);
metricEmitter.updateActualQueueSizeMetric(
queueSizeChange, request.getServletPath(), statusCode);
} catch (Exception e) {
e.printStackTrace();
}
}
}