Как распространить TraceId на другие потоки в одной транзакции для Spring Boot 3.x вместе с MicrometerJAVA

Программисты JAVA общаются здесь
Anonymous
Как распространить TraceId на другие потоки в одной транзакции для Spring Boot 3.x вместе с Micrometer

Сообщение Anonymous »

Я учусь использовать Micrometer для пометки TraceId и spanId в своем журнале. Но у меня есть проблема с одним сценарием: в одном методе я написал какой-то многопоточный код. Когда я использую Micrometer, похоже, что только основной поток имеет TraceId и spanId, в то время как TraceId других потоков в том же методе имеет значение null.
Некоторые фиктивные коды, чтобы показать это:

Код: Выделить всё

public void doSomething() {
log.info("here is main thread");
executor.submit(() -> log.info("here is thread1"));
}
и результат будет таким: только основной журнал потока имеет идентификатор трассировки.
Я знаю, что могу добавить несколько кодов для запуска нового диапазона и перехода к потокам. Но в идеале это можно реализовать с помощью некоторой конфигурации вместо вставки слишком большого количества несвязанного кода в мой бизнес-метод.
Поддерживается ли это, или мне просто нужно вручную создать новый диапазон и передать его?
Я ожидаю распространить тот же идентификатор трассировки на другие потоки в одной транзакции/методе.

Вернуться в «JAVA»