У нас есть микросервисная архитектура, созданная с помощью Spring Boot 2.2, и мы используем Spring Cloud Sleuth для распространения идентификатора трассировки.
Однако у нас есть один старый огромный монолитный компьютер, построенный с помощью Spring Boot 1.5.2, который не использует Sleuth (обновление этого монолита до Spring Boot 2.x не является вариантом). Я попытался интегрировать в него Spring Cloud Sleuth 1.3.5, но он также не генерирует идентификатор трассировки (и не нашел документации по этому поводу).
В настоящее время я закодировал этот фильтр для регистрации своей транзакции в качестве альтернативы, но я не хочу изобретать велосипед:
@Component
public class TransactionLoggingFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
String txnId = ofNullable(request.getHeader(TXN_ID_HEADER))
.orElse(randomUUID().toString().substring(0, 8));
MDC.put(TXN_ID, txnId);
chain.doFilter(request, servletResponse);
MDC.remove(TXN_ID);
}
}
Мне было интересно, как я могу добавить Sleuth и программно создать идентификатор трассировки / диапазона, чтобы он мог беспрепятственно распространяться на другие микросервисы с помощью Spring Boot 2.2.
Более старая документация, которую я нашел о Spring Cloud Sleuth, - это 2.1.6. Итак, я не нашел возможности использовать Sleuth с Spring Boot 1.5. Вы знаете, совместим ли он с ним и как я могу его интегрировать?
Мне не нравится приведенный выше фрагмент, потому что я создаю еще один идентификатор трассировки, который не обнаружен Сыщиком.