使用Openzipkin Brave通过ForkJoinPool进行跟踪

时间:2018-09-24 07:42:28

标签: java spring-mvc tracing zipkin forkjoinpool

我正在尝试将Openzipkin Brave应用于应用程序,以帮助使用Logback进行日志跟踪。该应用程序是spring webmvc应用程序,它使用ForkJoinPool。

在主线程中进行跟踪(spring webmvc部分)正在工作,但是我很难将跟踪上下文传递给ForkJoinThread。以我的理解,跟踪上下文存储在threadlocal中,显然ForkJoinWorkerThread(或ForkJoinTask)无法访问它。我不知道如何使它工作。

1 个答案:

答案 0 :(得分:0)

编辑:我们在回答此问题时发现ForkJoinPool当前不适用于Brave。由于该类的API限制,我们尚无法找到解决方案。

以下假设使用的是《勇敢传说》第5版(也可能适用于第4版):

CurrentTraceContext API为我们提供了一种方法:executorService,可用于包装ExecutorService。因此,您需要执行以下操作:


    ForkJoinPool fjp = ...;
    CurrentTraceContext ctc = Tracing.currentTraceContext();
    ExecutorService wrappedExecutorService = ctc.executorService(fjp);

然后您像使用wrappedExecutorService一样使用ForkJoinPool