Добавить диапазон с пользовательским идентификатором в Spring Sleuth (2.1.0) - PullRequest
0 голосов
/ 25 февраля 2019

Я хотел добавить логику в мое приложение так, чтобы, если у моего HttpServletRequest есть «traceId» в заголовке, я не хочу создавать новый traceId и переносить этот же идентификатор в следующие сервисы.

Я могу сделать это, создав фильтр перед TraceFilter, который использует этот traceId из запроса и создает диапазон с тем же идентификатором.Может ли кто-нибудь помочь в достижении этого?

У меня есть следующие сомнения:

  1. SPAN_CREATION: Как создать диапазон с существующим traceId?
  2. 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;
    }
}

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...