Я хотел добавить логику в мое приложение так, чтобы, если у моего HttpServletRequest есть «traceId» в заголовке, я не хочу создавать новый traceId и переносить этот же идентификатор в следующие сервисы.
Я могу сделать это, создав фильтр перед TraceFilter, который использует этот traceId из запроса и создает диапазон с тем же идентификатором.Может ли кто-нибудь помочь в достижении этого?
У меня есть следующие сомнения:
SPAN_CREATION
: Как создать диапазон с существующим traceId? SPAN_KEY
:Как мне установить этот промежуток в моем запросе, чтобы sleuth принял его и не создал новый?
Я пытаюсь использовать следующий код:
@Order(TraceWebServletAutoConfiguration.TRACING_FILTER_ORDER - 1)
public class HeaderInjectFilter extends GenericFilterBean {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
String searchId = extractTraceIdFromRequest((HttpServletRequest) request);
if(!StringUtils.isEmpty(searchId)){
request.setAttribute(SPAN_KEY, spanForId(searchId));
}
chain.doFilter(request, response);
}
private Span spanForId(final String traceId) {
return SPAN_CREATION;
}
}
Заранее спасибо.