@Override protected void doNotify(ExchangeSendingEvent event) throws Exception { String endpointUri = event.getEndpoint().getEndpointUri(); if (filter(endpointUri, endpointFilterPattern)) { Message msg = event.getExchange().getIn().getHeader(AsynchConstants.MSG_HEADER, Message.class); // create request String reqBody = ((Exchange) event.getSource()).getIn().getBody(String.class); String joinId = createResponseJoinId(event.getExchange()); Request req = Request.createRequest(endpointUri, joinId, reqBody, msg); try { // save request requestResponseService.insertRequest(req); // add to exchange for later use when response arrives event.getExchange().getIn().setHeader(SAVE_REQ_HEADER, req); } catch (Exception ex) { LOG.error("Request didn't saved.", ex); } } }
@Override public void notify(EventObject event) throws Exception { // use event notifier to track events when Camel messages to endpoints // these events corresponds to Zipkin client events // client events if (event instanceof ExchangeSendingEvent) { ExchangeSendingEvent ese = (ExchangeSendingEvent) event; String serviceName = getServiceName(ese.getExchange(), ese.getEndpoint(), false, true); Tracing brave = getTracing(serviceName); if (brave != null) { clientRequest(brave, serviceName, ese); } } else if (event instanceof ExchangeSentEvent) { ExchangeSentEvent ese = (ExchangeSentEvent) event; String serviceName = getServiceName(ese.getExchange(), ese.getEndpoint(), false, true); Tracing brave = getTracing(serviceName); if (brave != null) { clientResponse(brave, serviceName, ese); } } }
ZipkinClientRequestAdapter parser = new ZipkinClientRequestAdapter(this, event.getEndpoint()); INJECTOR.inject(span.context(), event.getExchange().getIn()); parser.onRequest(event.getExchange(), span.customizer());
if (event instanceof ExchangeSendingEvent) { ExchangeSendingEvent ese = (ExchangeSendingEvent)event; SpanDecorator sd = getSpanDecorator(ese.getEndpoint()); if (!sd.newSpan() || isExcluded(ese.getExchange(), ese.getEndpoint())) { return; SpanBuilder spanBuilder = tracer.buildSpan(sd.getOperationName(ese.getExchange(), ese.getEndpoint())).withTag(Tags.SPAN_KIND.getKey(), sd.getInitiatorSpanKind()); sd.pre(span, ese.getExchange(), ese.getEndpoint()); tracer.inject(span.context(), Format.Builtin.TEXT_MAP, sd.getInjectAdapter(ese.getExchange().getIn().getHeaders(), encoding)); ActiveSpanManager.activate(ese.getExchange(), span);
public static String endpointUri(EventObject event) { if (event instanceof AuditEvent) { AuditEvent auditEvent = (AuditEvent) event; return auditEvent.getEndpointURI(); } else if (event instanceof ExchangeSendingEvent) { ExchangeSendingEvent sentEvent = (ExchangeSendingEvent) event; return sentEvent.getEndpoint().getEndpointUri(); } else if (event instanceof ExchangeSentEvent) { ExchangeSentEvent sentEvent = (ExchangeSentEvent) event; return sentEvent.getEndpoint().getEndpointUri(); } else if (event instanceof AbstractExchangeEvent) { AbstractExchangeEvent ae = (AbstractExchangeEvent) event; Exchange exchange = ae.getExchange(); if (event instanceof ExchangeFailureHandledEvent || event instanceof ExchangeFailedEvent) { return exchange.getProperty(Exchange.FAILURE_ENDPOINT, String.class); } else { Endpoint fromEndpoint = exchange.getFromEndpoint(); if (fromEndpoint != null) { return fromEndpoint.getEndpointUri(); } } } return null; }