@Bean public TraceAsyncAspect traceAsyncAspect(Tracer tracer, SpanNamer spanNamer) { return new TraceAsyncAspect(tracer, spanNamer); }
String name(ProceedingJoinPoint pjp) { return this.spanNamer.name(getMethod(pjp, pjp.getTarget()), SpanNameUtil.toLowerHyphen(pjp.getSignature().getName())); }
@Around("execution (@org.springframework.scheduling.annotation.Async * *.*(..))") public Object traceBackgroundThread(final ProceedingJoinPoint pjp) throws Throwable { String spanName = name(pjp); Span span = this.tracer.currentSpan(); if (span == null) { span = this.tracer.nextSpan(); } span = span.name(spanName); try (Tracer.SpanInScope ws = this.tracer.withSpanInScope(span.start())) { span.tag(CLASS_KEY, pjp.getTarget().getClass().getSimpleName()); span.tag(METHOD_KEY, pjp.getSignature().getName()); return pjp.proceed(); } finally { span.finish(); } }
@Bean public TraceAsyncAspect traceAsyncAspect(Tracer tracer, SpanNamer spanNamer) { return new TraceAsyncAspect(tracer, spanNamer); }
String name(ProceedingJoinPoint pjp) { return this.spanNamer.name(getMethod(pjp, pjp.getTarget()), SpanNameUtil.toLowerHyphen(pjp.getSignature().getName())); }
@Around("execution (@org.springframework.scheduling.annotation.Async * *.*(..))") public Object traceBackgroundThread(final ProceedingJoinPoint pjp) throws Throwable { String spanName = name(pjp); Span span = this.tracer.currentSpan(); if (span == null) { span = this.tracer.nextSpan(); } span = span.name(spanName); try (Tracer.SpanInScope ws = this.tracer.withSpanInScope(span.start())) { span.tag(CLASS_KEY, pjp.getTarget().getClass().getSimpleName()); span.tag(METHOD_KEY, pjp.getSignature().getName()); return pjp.proceed(); } finally { span.finish(); } }