Установка идентификатора трассы Спана в "Храбрый против Слюта"
Я ищу правильный способ установить идентификатор трассы для Span в Brave. Предварительно храбрый у нас было:
Span span = Span.builder().traceId(someLong).build();
Какой смелый эквивалент? У меня есть следующее, но это, очевидно, не правильно, так как нет способа явно установить контекст Span.
Span span = tracer.nextSpan().start();
span.context().toBuilder().traceId(someLong).build();
1 ответ
Вы можете сделать это так brave.Span span = tracer.nextSpan().name("name").traceId(someLong).start();
Или больше заранее
brave.Span span = tracer.nextSpan().name("name").traceId(someLong);
try (SpanInScope ws = tracer.withSpanInScope(span.start())) {
// do sth
} finally {
span.finish();
}
Взгляните на руководство по миграции весеннего облака и поймите все изменения
Вы можете использовать TraceContext Builder, чтобы установить свой собственный TraceId.
TraceContext traceContext = TraceContext.newBuilder().traceId(traceId).build();
Span span =
this.tracing.tracer()
.toSpan(traceContext)
.name("application.name"))
.start();
Однако это необязательно; вы можете позволить Tracer генерировать свой собственный traceId при создании нового Span:-
this.tracing.tracer().nextSpan().name("application.name").start();
Мы можем построить
TraceContext
сначала, а затем мы можем использовать это для создания
TraceContextOrSamplingFlags
который затем можно использовать для создания
Span
как следует:
TraceContext traceContext = TraceContext.newBuilder()
.traceId(someTraceId)
.spanId(someSpanId)
.build();
Span span = tracer.nextSpan(TraceContextOrSamplingFlags.create(traceContext))
.name(someName).start();