@Override public void onComplete(MessageContext context) { String name = null; Boolean successful = (Boolean) context.getAttribute(SUCCESSFUL); if (successful == null) { name = MetricRegistry.name(context.getApplication().getConfiguration().getName(), EXCEPTIONS); MetricRegistries.getRegistry(context.getApplication().getConfiguration().getName()).meter(name).mark(); } else { if (! successful) { name = getMetricName(context, Integer.toString(context.getResponse().getStatus().code())); MetricRegistries.getRegistry(context.getApplication().getConfiguration().getName()).meter(name).mark(); } name = getMetricName(context, RESPONSE_TIME); Timer timer = MetricRegistries.getRegistry(context.getApplication().getConfiguration().getName()).timer(name); timer.update(clock.getTick() - (Long) context.getAttribute(START_TIME), TimeUnit.NANOSECONDS); } } }
@Override public void onApplicationResolved(MessageContext context) { ApplicationContext.instance().setApplicationConfiguration(context.getApplication().getConfiguration()); for (final MessageListener listener : messageListeners) { invoke(new ListenerInvoker(){ @Override public void invoke(MessageContext context) { listener.onApplicationResolved(context); } }, context); } }
protected String getMetricName(MessageContext context, String metricName) { String name = null; if (! Strings.isNullOrEmpty(context.getMatchedRoute())) { name = context.getMatchedRoute(); } else { name = context.getApplication().getConfiguration().getName(); } name = formatName(name); return MetricRegistry.name(name, context.getRequest().getMethod().toString(), metricName); }
/** * Creates the container request from the http request * * @param httpRequest * @return */ protected ContainerRequest createContainerRequest(MessageContext context) { Application<ApplicationConfiguration> application = context.getApplication(); FullHttpRequest httpRequest = context.getRequest(); URI baseUri = URI.create(context.getBaseUri().resolve(application.getPath()) + "/"); URI requestUri = HttpUtil.createURI(httpRequest.getUri()); ContainerRequest containerRequest = new ContainerRequest(baseUri, requestUri, httpRequest.getMethod().name(), null, new MapPropertiesDelegate()); // containerRequest.setProperty(REQUEST_PROPERTY_REMOTE_ADDR, context.getRequest().channel().remoteAddress()); containerRequest.setEntityStream(new ByteBufInputStream(httpRequest.content())); for (Map.Entry<String, String> headerEntry : httpRequest.headers()) { containerRequest.getHeaders().add(headerEntry.getKey(), headerEntry.getValue()); } return containerRequest; }