春天的侦探|创建新的(分离/孤立)跟踪

时间:2018-04-06 06:32:40

标签: spring zipkin spring-cloud-sleuth

我有一个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调用都与一个Trace相关联。很可能是因为跟踪上下文在调用ScheduledExecutorService::submit期间被移交。

如何在开始下一次迭代之前清除当前跟踪,以便每次http调用都会产生新的分离/孤立跟踪?

1 个答案:

答案 0 :(得分:1)

如果您正在使用Sleuth 2.0,则可以使用Tracer方法调用以创建新跟踪。在老版本的侦探中,我想我要做的是使用 NOT bean的执行程序。那样你就会失去踪迹,它会在某个时刻重新启动(通过休息模板或类似的那样)。