我正在尝试将Openzipkin Brave应用于应用程序,以帮助使用Logback进行日志跟踪。该应用程序是spring webmvc应用程序,它使用ForkJoinPool。
在主线程中进行跟踪(spring webmvc部分)正在工作,但是我很难将跟踪上下文传递给ForkJoinThread。以我的理解,跟踪上下文存储在threadlocal中,显然ForkJoinWorkerThread(或ForkJoinTask)无法访问它。我不知道如何使它工作。
答案 0 :(得分:0)
编辑:我们在回答此问题时发现ForkJoinPool
当前不适用于Brave。由于该类的API限制,我们尚无法找到解决方案。
以下假设使用的是《勇敢传说》第5版(也可能适用于第4版):
CurrentTraceContext
API为我们提供了一种方法:executorService
,可用于包装ExecutorService
。因此,您需要执行以下操作:
ForkJoinPool fjp = ...; CurrentTraceContext ctc = Tracing.currentTraceContext(); ExecutorService wrappedExecutorService = ctc.executorService(fjp);
然后您像使用wrappedExecutorService
一样使用ForkJoinPool