У меня есть приложение Spring Boot, использующее Spring Sleuth для отслеживания вызовов между службами. В этом приложении существует ScheduledExecutorService который выполняет HTTP-запросы в цикле (псевдокод ниже):
class HttpCaller implements Runnable {
public void run() {
performHttpCall();
// "loop"
executor.submit(this::run);
}
}
// start it once
scheduler.submit(new HttpCaller());
Если я теперь посмотрю на следы, созданные Sleuth и хранящиеся в Zipkin, я вижу, что все HTTP-вызовы связаны к единственной трассировке. Скорее всего, потому что контекст трассировки передается во время вызова ScheduledExecutorService::submit
.
Как очистить текущую трассировку перед началом следующей итерации, чтобы каждый HTTP-вызов приводил к новой отсоединенной / потерянной трассе?