Я ищу правильный способ установить идентификатор трассировки для Span в Brave. Pre-Brave у нас было:
Span span = Span.builder().traceId(someLong).build();
Какой храбрый эквивалент? У меня есть следующее, но это, очевидно, неверно, так как нет возможности явно установить контекст Span.
Span span = tracer.nextSpan().start();span.context().toBuilder().traceId(someLong).build();





Вы можете сделать это так 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();
}
Взгляните на Руководство по миграции весеннего облачного сыщика, чтобы уловить все изменения
Ты прав. Корневые трассировщики по умолчанию генерируют 64-битные или 128-битные traceId. Тем не менее, вы можете установить traceId через TraceContext, по крайней мере, для дочерних трасс, таких же, как и для вновь созданных.
Вы можете использовать TraceContext Builder, чтобы установить свой собственный TraceId.
TraceContext traceContext = TraceContext.newBuilder().traceId(traceId).build();
Span span =
this.tracing.tracer()
.toSpan(traceContext)
.name("application.name"))
.start();
Однако это необязательно; вы можете позволить Tracer генерировать свой собственный traceId при создании нового диапазона: -
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();
traceId()не является сеттером.